Kolakoski序列及应用拓展
来源:互联网 发布:java中bigdecimal相加 编辑:程序博客网 时间:2024/06/08 07:39
/*
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……];
对于其他给定的整数组,同样可以用类似的方法构造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[]
*/
/*
解题思路: 首先给定a数组,b数组中第一个数字肯定和a数组第一个数字相同,此时需要追踪b数组下标所对应的数字
记住这个长度以便后边循环,例如,b[1]为2,那么b[2]肯定也为2,此时需要循环输出,然后更新a数组的序列,依次循环
这里需要注意的是当a数组到达最后一个数字时,需要从头开始继续循环。
*/
#include<iostream>using namespace std;int main(){ int n,m; //n为要输出多少项序列,m为给定的整数组的长度 cin>>n>>m; int *a = new int[m]; //输入给定的整数组 int *b = new int[n]; //将要输出的Kolakoski序列 for(int i = 0;i<m;i++) { cin>>a[i]; } int index = 0; int slow = 0; for(int i = 0; i < n;) { b[i] = a[index]; int num = b[slow++]; //需要记住b数组的序列大小,重复输出数字 for(int j = num;j>0;j--) { b[i++] = a[index]; //b数组存放重复的数字,num决定有几个相同的数字 } index++; //相同的循环完之后,a数组中的数字需要往后走继续循环 if(index == m) //a数组始终循环 index = 0; } for(int i = 0;i<n;i++) cout<<b[i]<<endl;}
阅读全文
0 0
- Kolakoski序列及应用拓展
- Kolakoski序列及应用扩展
- Kolakoski序列
- Kolakoski序列
- kolakoski序列
- Kolakoski序列生成遇到的问题及调试过程
- HDU 6130-Kolakoski(Kolakoski序列)
- 康拓展开及应用
- 康拓展开及应用
- 康拓展开及应用
- HDU 6130 Kolakoski(构造序列)
- 搜狐笔试之Kolakoski序列
- Kolakoski
- 搜狐2017笔试编程题--Kolakoski序列
- Kolakoski序列——搜狐笔试
- 搜狐笔试题目一kolakoski序列
- 【C++】【学习笔记】kolakoski序列:小探纯自然数学序列
- Linux(Centos5.5) redis 安装及redisphp拓展安装应用
- DNS BIND之recursion递归
- js各种宽高的总结
- python的五大数据类型
- AutoCAD 2018 64位/32位 简体中文免费版
- Spring Cloud Eureka-服务注册、消费、断路
- Kolakoski序列及应用拓展
- 各浏览器中自定义滚动条的样式
- 测试用例的作用
- HDU 1074 状态压缩DP 作业扣分
- 使用Git GUI上传自己的项目到github
- loadrunner Web_类函数之web_convert_to_formatted()
- 理解构造函数、析构函数、赋值操作符函数不能被继承
- 大四课程设计之基于RFID技术的考勤管理系统(一)项目介绍
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛- A. Banana