要求下排每个数都是先前上排那十个数在下排出现的次数。(java实现)

给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数

要求下排每个数都是先前上排那十个数在下排出现的次数。

上排的十个数如下:

【0,1,2,3,4,5,6,7,8,9】

举一个例子,

数值: 0,1,2,3,4,5,6,7,8,9

分配: 6,2,1,0,0,0,1,0,0,0

0在下排出现了6次,1在下排出现了2次,

2在下排出现了1次,3在下排出现了0次....

以此类推..

对下排数组b进行n遍修正(次数n未知),直到求出符合要求的下排数组b

修正过程为:对上排的每个元素a[i],从头对下排进行遍历,求出a[I]在下排出现的次数sum,令b[i]=sum,

对b[i]的赋值会影响到下排数组b中元素的正确性,使用多次遍历修正就好了

使用java实现:

public class number {
   
    public static void main(String[] args) {
           int[] a={0,1,2,3,4,5,6,7,8,9};
           int[] b={0,0,0,0,0,0,0,0,0,0};
           System.out.print("数组a:  ");
           for (int i=0;i<a.length;i++){
               System.out.print(a[i]+"  ");
           }
           System.out.println(" ");
           update(a,b);

    }

    //获取a中数字在b中出现的次数
    public  static  int  num1(int a[],int b[],int x){
        int sum=0;
        int array=a[x];
        for(int i=0;i<b.length;i++){
              if(b[i]==array){
                  sum++;
              }
         }
        return sum;
    }

    public  static void update(int a[],int b[]){
        boolean flag= false;
        while (!flag) {
            for (int i = 0; i < b.length; i++) {
                int sum = num1(a, b, i);   //获得a数组中第i个数在b中出现的次数
                b[i] = sum;  //将次数放入b 数组中
                if (inspect(a, b)) {
                    break;
                }       
            }
             flag = inspect(a, b);
        }
        System.out.print("数组b:  ");
        for (int i=0;i<b.length;i++){
            System.out.print(b[i]+"  ");
        }
        System.out.println(" ");

    }

    public  static  boolean inspect(int a[],int b[]) {
        boolean result = true;
        for (int i = 0; i < b.length; i++) {
            int sum = num1(a, b, i);
            if (sum != b[i]) {
                result = false;
                break;
            }
        }
        return result;
    }

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白玉十二楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值