笔试,橘子称重题

2023-11-05

题目:甲有m个橘子分别为n克,每次找到平均数,要么丢弃比它大的,要么丢弃比它小的,将剩下的和记为s,不断循环
要求输入一些数字,其与s比较,有则输出YES,无则输出NO。
第一行输入橘子个数与要比较的数字的个数
第二行输入橘子重量
第三行到结束输入要求比较的重量
例如:
输入:6 3
1 3 4 5 6 8
7
8
12
输出:YES
YES
NO

import java.sql.SQLOutput;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int a[]=new int[input.nextInt()];
        int b[]=new int[input.nextInt()];
        int sum=0;
        String e[]=new String[b.length];
        for (int i = 0; i < e.length; i++) {
            e[i]="NO";
        }
        int d=0;
        for (int i = 0; i < a.length; i++) {
            a[i]=input.nextInt();
            sum=sum+a[i];
        }
        for (int i = 0; i < b.length; i++) {
            b[i]=input.nextInt();
        }
        e=suan(a,b,e);
        for (int i = 0; i < e.length; i++) {
            if (b[i]==sum){
                e[i]="YES";
            }
        }
        for (int i = 0; i < e.length; i++) {
            System.out.println(e[i]);
        }
    }
    static String[] suan(int[] a,int []h,String e[]){
        int b[]=new int[a.length];
        int c[]=new int[a.length];
        int m[]=new int[a.length];
        int n[]=new int[a.length];
        m[0]=0;n[0]=0;
        int num=0,nums=0,s=0,sum1=0,sum2=0,m1=1,n1=1,j=0,k=0;
        for (int i = 0; i < a.length; i++) {
            num=num+a[i];
            if (a[i]!=0){s++;}
        }
        nums=num/s;
        for (int i = 0; i < a.length; i++) {
            if(a[i]>nums){
                sum1=sum1+a[i];
                b[i]=a[i];
            }
        }
        for (int i = 0; i < e.length; i++) {
            if(h[i]==sum1){
                e[i]="YES";
            }
        }
        for (int i = 0; i < b.length; i++) {
            if(b[i]!=0){
                m[m1]=b[i];
                if(b[i]!=m[1]){
                    j++;
                }
            }
        }
        if (j!=0){
            suan(b,h,e);
        }
        for (int i = 0; i < a.length; i++) {
            if(a[i]<=nums){
                sum2=sum2+a[i];
                c[i]=a[i];
            }
        }
        for (int i = 0; i < e.length; i++) {
            if(h[i]==sum2){
                e[i]="YES";
            }
        }
        for (int i = 0; i < c.length; i++) {
            if(c[i]!=0){
                n[n1]=b[i];
                if(b[i]!=m[1]){
                    k++;
                }
            }
        }
        if (k!=0){
            suan(c,h,e);
        }
        return e;
    }
}

广度优先方法。
递归方式解决问题,将数据导入递归方法,每次递归比较一次是否有一致的,一致的修改,不一致,不改,最后返回出所有结果的比较,然后取答案,当时笔试的时候想到的。
后来思考,深度优先更好,可以每个需要比较的结果进入一个方法,如果有返回值就结束,无返回值,一直进行,直到比较完,代码量要小很对,时间复杂度也小一些。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔试,橘子称重题 的相关文章

随机推荐

  • ssl协议及开源实现openssl

    转载地址 https blog csdn net jinbusi blog article details 76039206 locationNum 4 fps 1 ssl协议 SSL Secure Socket Layer 安全套接层 s
  • Rsync的核心算法

    一 什么是Rsync 1 rsync 是 unix linux 下同步文件的一个高效算法 它能同步更新两处计算机的文件和目录 并适当的利用查找文件中的不同块以减少数据传输 2 rsync中一项与其他大部分类似程序或协定中所未见的重要特性是镜
  • Delphi 对象的创建(create)与释放(free/destory)

    create后一定要free吗 简单举例 procedure a var x TX begin x TX create do someting x free 如果我这里不free 到了这个end不就是相当于C中的 自动释放吗 也就是说在此处
  • Android 基础知识4-3.10 ScrollView(滚动条)详解

    一 简介 首先来看google官方对他的介绍 翻译过来就是可以滚动的用户布局容器 如果手机显示不下子布局 那么可以使用scrollView 当然谷歌也说NestedscrollView已经提供了更好的用户体验 这个我们以后再详细总结下 谷歌
  • 批量处理sql表

    1 批量CRUD表字段 DECLARE V SQL VARCHAR2 2000 V TABLE NAME VARCHAR2 30 CURSOR C1 IS 查询当前用户下 ZFPT40 STATISTIC ANALYSIS 的所有表 SEL
  • 数据结构:循环链表的使用

    循环链表 循环链表 将单链表中终端结点的指针端由空指针改为指向头结点 就使整个单链表形成一个环 这种头尾相接的单链表称为单循环链表 简称循环链表 如图所示 非空的循环链表如图 循环链表与单链表的主要差异在于循环的判断上 原来是判断p gt
  • c语言的结构体是面向对象吗,基于面向对象的思想来使用结构体,将会有意想不到的效果...

    程序开发过程中 很多人都会接触到客户服务端模型 通常客户服务端模型是基于socket的网络通信 而网络通信是需要定义通信协议 通信协议结构一般是用结构体的方式来表示 而数据内容有的可能会使用json格式 对于嵌入式设备 数据内容更多的还是采
  • mysql8.0.19.0是不是免费的_mysql8.0.19 免安装版本的相关配置

    1 下载好对应的数据库版本 网址 https dev mysql com downloads mysql 2 下载解压到一个目录 例如 D zyf mysql8 说一下遇到的一个问题 当我设置成D zyf soft mysql8的时候遇到一
  • 重写介绍。

    1 方法重写的作用和使用 方法重写子类继承了父类的方法后 如果发现在需求下 父类的某些方法不太强大 我们就可以在子类中进行重写 宠物自白 Override 注解不报错 说明你写的就是方法重写 规范 必须要加 public void show
  • 拷贝函数访问本类的私有变量的问题

    chap 5 h ifndef CHAP 5 H define CHAP 5 H include string include iostream using namespace std class B public B int a int
  • 数据库命令行导入方式及部分问题的解决办法

    0 写在前面 以下内容仅为个人的经验谈 没有任何学术性 可能存在一些翻译不准确的情况 仅作为一些问题的解决办法参考 1 基本步骤 用管理员模式打开cmd 登录数据库 mysql u
  • qt的QLabel中的字体越界

    今天使用文泉驿的中文库wqy zenhei ttc 发现QLabel中的汉字上面切顶了 但是如果一个QLabel和一个QLineEdit并排就不会出现这种现象 最后对QLabel使用样式解决了这个问题 MyLabel gt setStyle
  • 增量式PID是什么?不知道你就落伍了

    目录 1 什么是增量式PID 2 举个例子 2 1 位置式PID 2 2 增量式PID 3 伪算法 4 C语言实现 5 总结 在之前一篇博客中 简易PID算法的快速扫盲 简单介绍了PID算法的基本原理和位置式算法的实现过程 由于部分推导过程
  • WinNas之seafile server私人云盘搭建

    目录 部署方法 其他说明 部署方法 避免重复造车轮 直接附别人写的链接 https www kingsonho com install seafile on windows 其他说明 安装后如果需要修改web登录端口号 只在web页面上修改
  • JVM中一次完整的GC流程中是怎样的,对象如何晋升到老年代,说说你知道的几种主要的JVM参数

    对象诞生即新生代 gt eden 在进行minor gc过程中 如果依旧存活 移动到from 变成Survivor 进行标记 当一个对象存活默认超过15次都没有被回收掉 就会进入老年代 主要的JVM参数 http ifeve com use
  • 直流减速电机通过编码器计算车轮转速、车轮速度、路程计算。

    第一步 计算Nms间隔的计数变化量 变化量var 当前读数 前次读数 第二步 计算1s间隔的计数变化量 设N 200 变化量var 5 第三步 计算1min间隔编码器的输出脉冲个数 变化量var 5 4 倍频数 第四步 计算1min间隔编码
  • 基于Unity3D的黄金矿工

    1 游戏背景 黄金矿工小游戏 是一款敏捷 经典小游戏 怀揣梦想的黄金矿工为了寻找更多金子开始了他的挖金之旅 游戏目标 使用钩子放入地下 开拓你的智慧寻找宝物 达到目标金额过关吧 2 开发工具的基本使用 本游戏开发工具选择Unity3D 20
  • Matlab yolov2 深度学习物体检测 超级简单代码

    在深度学习的物体检测方面 相比其他平台 MATLAB打包好了很多模块方法和网络 对于简单的应用 已经足够应付 大家跟着调用 稍微修改一下适应的参数就可以啦 下面我手把手教学 1 需要读取提前制作的csv文件 里面有training data
  • [A3C]:算法原理详解

    强化学习 A3C算法原理 深度强化学习框架使用异步梯度下降来优化深度神经网络控制器 提出了四种标准强化学习算法的异步变体 并证明并行actor learners在训练中具有稳定作用 使得四种方法都能成功地训练神经网络控制器 首先明确什么是A
  • 笔试,橘子称重题

    题目 甲有m个橘子分别为n克 每次找到平均数 要么丢弃比它大的 要么丢弃比它小的 将剩下的和记为s 不断循环 要求输入一些数字 其与s比较 有则输出YES 无则输出NO 第一行输入橘子个数与要比较的数字的个数 第二行输入橘子重量 第三行到结