Kolakoski序列及应用扩展
来源:互联网 发布:php商城订单 编辑:程序博客网 时间:2024/05/19 23:56
/*
2018搜狐秋招笔试题(技术类)
题目要求: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;#if 1int 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;}#endif
阅读全文
0 0
- Kolakoski序列及应用扩展
- Kolakoski序列及应用拓展
- Kolakoski序列
- Kolakoski序列
- kolakoski序列
- Kolakoski序列生成遇到的问题及调试过程
- HDU 6130-Kolakoski(Kolakoski序列)
- HDU 6130 Kolakoski(构造序列)
- 搜狐笔试之Kolakoski序列
- Kolakoski
- 搜狐2017笔试编程题--Kolakoski序列
- Kolakoski序列——搜狐笔试
- 搜狐笔试题目一kolakoski序列
- 最长升/降/不升/不降子序列:模型、解决及扩展应用
- 【C++】【学习笔记】kolakoski序列:小探纯自然数学序列
- Log4j基础应用及扩展
- 扩展星历原理及应用
- 最长公共子序列问题及扩展
- 这些PDF文档类型你了解吗?
- ASP.NET Core MVC源码学习:MVC启动流程详解
- java-父类和子类的构造函数
- 解决腾讯云安装SSL证书后,服务器可以打开https,外网打不开的问题。
- Spring Boot入门教程-热部署
- Kolakoski序列及应用扩展
- Apsara Clouder云安全专项技能认证之云平台使用安全,快来学习吧!
- base-command
- Android检查更新库CheckUpdateLibrary使用教程(二)
- retrofit2注解
- Linux查看CPU等硬件信息
- LinearLayout设置背景图片
- Python可视化方案增加
- xdoj 1227 Godv的数列(lucas,扩展lucas,中国剩余定理模版)