笔试,橘子称重题

题目:甲有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;
    }
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
射频IC(射频集成电路)是一种专用于射频信号处理的集成电路。针对射频IC的笔试是一种判断,以下是对这种类型目的回答: 射频IC主要用于无线通信、无线电频段、雷达、天线等领域,其中涉及到频率较高的信号处理和传输。而射频IC与微控制器、数字信号处理器(DSP)等其他集成电路不同,它专注于处理射频信号,可实现高频率信号的放大、变频、调制解调等功能。 对于射频IC的笔试来说,判断往往涉及到射频电路设计、射频信号处理、射频器件选择等方面的知识。举个例子,一道可能的射频IC判断为:射频IC可实现将低频信号变为高频信号。 对于这个判断,我们可以根据射频IC的功能特点进行判断。射频IC主要用于处理高频信号,将低频信号变为高频信号的功能需要在射频IC之外的其他射频电路中实现,因此判断的答案为“错误”。 在回答射频IC笔试时,我们需要具备基本的射频电路设计和信号处理的知识。通过对射频IC的工作原理、应用场景和相关器件特点的了解,可以辅助我们正确判断和回答问。同时,经过实际操作和实验实践的积累也是提高对射频IC理解和应用能力的重要途径。 综上所述,针对射频IC的判断需要我们对射频电路设计和信号处理相关知识的了解,并结合对射频IC工作原理的理解进行判断。只有通过理论知识和实践经验的积累,才能更好地回答和解答射频IC的笔试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值