zoukankan      html  css  js  c++  java
  • 搜狐_笔试_题目一kolakoski序列

    import java.util.*;
    /*
        Kolakoski序列是个随机生成的无限序列.
        例如,当给定的整数组为[1,2]时,Kolakoski序列是这样的:
        [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,...]
        如果我们将相邻的相同的数字分成一组,那么将会得到:
        [[1],[2,2],[1,1],[2],[1],[2,2],[1],[2,2],[1,1],[2],[1,1],[2,2],[1],[2],[1,1],[2],[1],[2,2],[1,1],...]
        可以看出,每组数字交替由1,2组成.
        接下来对每个分组求它的长度,得到:
        [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1,...]
        可以看出,经过上述变换后,数列保持不变.
        对于其他给定的整数组,同样可以用类似的方法构造Kolakoski序列,例如给定整数组[2,3]时:
        [2,2,3,3,2,2,2,3,3,3,2,2,3,3,2,2,3,3,3,2,2,2,3,3,3,2,2,3,3,...]
        给定整数组[2,1,3,1]时,构造得到如下:
        [2,2,1,1,3,1,2,2,2,1,3,3,1,1,2,2,1,3,3,3,1,1,1,2,1,3,3,1,1,...]
        输入
        
        输入由两行组成,
        第一行包括两个正整数n,m
        第二行包括m个正整数a[]
        数据规模与限制:
        0<n<10000
        1<m<1000
        0<a[i]<1000
        a[i]不等于a[i+1]
        a[0]不等于a[m-1]
        输出
        
        每行只有一个数字,共n行
        整数组a生成的Kolakoski序列的前n项
        Example
        
        Input
        
        30 4
        2 1 3 1  
        Output
        
        2
        2
        1
        1
        3
        1
        2
        2
        2
        1
        3
        3
        1
        1
        2
        2
        1
        3
        3
        3
        1
        1
        1
        2
        1
        3
        3
        1
        1
        2
     */
    public class Sohu_kolakoskiSequece {
        public static void getArr(int n, int m, int[] a) {
            List<Integer> lists = new ArrayList<Integer>();
            int flag = 0;
            int k = 0;
            int count = 0;
            while(flag < n) {
                if(k == m) k = 0;
                lists.add(a[k]);
                flag++;
                for(int i = 0; i < lists.get(count) - 1; i++) {
                    lists.add(a[k]);
                    flag++;
                }
                k++;
                count++;
            }
           // System.out.println(lists.size());
            for (int s = 0; s < n; s++)
                System.out.print(lists.get(s) + " ");
        }
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n = in.nextInt();
            int m = in.nextInt();
            int[] a = new int[m];
            for(int i = 0; i < m; i++) {
                a[i] = in.nextInt();
            }
            getArr(n,m,a);
        }
    }
  • 相关阅读:
    网文阅读笔记
    UUID
    各种网站
    项目
    常用正则表达式
    Struts 2.0 HelloWorld
    接口与抽象类(深入多态)
    #define的优点/volatile的好处
    基本套接口编程
    大小端判断及相互转化
  • 原文地址:https://www.cnblogs.com/zzsaf/p/7447730.html
Copyright © 2011-2022 走看看