Kolakoski序列--输出1,2的前n个数
2017-08-29 10:39
197 查看
Kolakoski序列是一个仅由1和2组成的无限数列,是一种通过“自描述”来定义的数列 。他在整数数列大全网站上排名第二位,足见该数列在组合数学界中的重要性。
Kolakoski序列是一个仅由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,…(OEIS上的A000002)
它的定义很简单,若把数列中相同的数定为一组,令a(1)=1,a(2)=2,则a(n)等于第n组数的长度。
可以根据这个定义来推算第三项以后的数:例如由于a(2)=2,因此第2组数的长度是2,因此a(3)=2,;
由于a(3)=2,所以第三组数的长度是2,因此a(4)=a(5)=1;由于a(4)=1,a(5)=1,所以第四组数和第五组数的长度都为1,因此a(6)=2,a(7)=1,以此类推。
https://baike.baidu.com/item/Kolakoski%E5%BA%8F%E5%88%97/16683856?fr=aladdin
![](https://img-blog.csdn.net/20170829103801372?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDAwMjE4NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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,2,1,1,2,1,2,2,1,2,2,1,1,2,1,2,2,1,2,1,1,2,1,1,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,1,2,2,1,2,1,1,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,
Kolakoski序列是一个仅由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,…(OEIS上的A000002)
它的定义很简单,若把数列中相同的数定为一组,令a(1)=1,a(2)=2,则a(n)等于第n组数的长度。
可以根据这个定义来推算第三项以后的数:例如由于a(2)=2,因此第2组数的长度是2,因此a(3)=2,;
由于a(3)=2,所以第三组数的长度是2,因此a(4)=a(5)=1;由于a(4)=1,a(5)=1,所以第四组数和第五组数的长度都为1,因此a(6)=2,a(7)=1,以此类推。
https://baike.baidu.com/item/Kolakoski%E5%BA%8F%E5%88%97/16683856?fr=aladdin
public class Main { public void outPutKolakoski(int n) { int[] a = new int[10000]; a[1] = 1; a[2] = 2; a[3] = 2; int cnt = 3; for (int i = 3; i < n && cnt < n; i++) { for (int j = 1; j <= a[i]; j++) { if (a[cnt] == 2) { a[cnt + j] = 1; } else { a[cnt + j] = 2; } // cnt += a[i];//在外面的for循环实现 } cnt += a[i]; }//for for (int i = 1; i < n; i++) { System.out.print(a[i] + ","); } }//outPutKolakoski public static void main(String[] args) { new Main().outPutKolakoski(100); }//100表示输出序列的前100个元素 }
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,2,1,1,2,1,2,2,1,2,2,1,1,2,1,2,2,1,2,1,1,2,1,1,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,1,2,2,1,2,1,1,2,2,1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,
相关文章推荐
- Kolakoski序列--输入任意数,输出前n个数
- 数据结构之 图论---图的深度遍历( 输出dfs的先后遍历序列 )
- java实现输入一个正整数n,输出全部连续正整数相加后等于n的所有序列。
- 输入一个正数n,输出所有和为n连续正数序列。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5、4-6和7-8。
- poj 3984 迷宫问题(bfs 输出序列)
- 网易面试题 输入一个正数n,输出所有和为n连续正数序列
- 输出最长回文子序列字符数
- 输出前k序列数组
- 二叉树:根据二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- poj1231最大连续子序列和并输出子列的位置
- 建立有向图的邻接表,深度优先遍历和广度优先遍历的递归与非递归算法,判断是否是有向无环图,并输出一种拓扑序列
- 搜狐笔试之Kolakoski序列
- Kolakoski序列及应用扩展
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 已知二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列
- 2012.9腾讯笔试题: 顺序输出到栈, 栈中元素可任意时刻出栈. 求输出序列的可能数
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 输出随机数1到511*511序列
- 设计递归函数,求出并输出Fibnacci序列的第20个数,Fibnacci序列形如0,1,1,2,3,5,8...
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。