码迷,mamicode.com
首页 > 其他好文 > 详细

搜狐_笔试_题目一kolakoski序列

时间:2017-08-29 14:25:45      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:col   正整数   ==   blog   笔试   seq   限制   exti   scanner   

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);
    }
}

 

搜狐_笔试_题目一kolakoski序列

标签:col   正整数   ==   blog   笔试   seq   限制   exti   scanner   

原文地址:http://www.cnblogs.com/zzsaf/p/7447730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!