第一道题的大致思路是:Kolakoski序列变换后还是Kolakoski序列本身。那么就需要有两个索引变量,一个是Kolakoski序列索引k_index,一个是变换后的Kolakoski序列所以c_index。因为变换前后都是同一个串,所以可以就在一个Kolakoski序列上进行构造操作。也就是说,当前Kolakoski序列的第i个同数字构成子串的长度将成为变换后的Kolakoski序列中的第i个数字(也就是多对一),换而言之,变换后的Kolakoski序列的数对应变换前的Kolakoski序列的子串长度。 给定的数组a[]={1,2},那么开始构造:(粗略思路如下) 1) 不断循环地依次从a中取数,用索引index代表即为a[index]; 2) 如果Kolakoski序列空,则直接添加a[index]进入Kolakoski序列,否则判断当前取的数a[index]和现在构造的Kolakoski序列的最后一个数是否相同值,如果相同,则index++(判断越界,若越界则index=0),否则就将这个值赋给Kolakoski序列,此时操作k_index++。 3) 然后进行Kolakoski[c_index] - 1次循环讲现在的a[index]数添加进去(即Kolakoski[k_index] = a[index]; k_index++),当k_index == n时,输出这个Kolakoski序列。 4) index++并判断是否越界,c_index++。这样不断循环上述步骤,就能求出Kolakoski序列了
点赞 评论

相关推荐

04-10 11:56
如皋中学 Java
高斯林的信徒:双c9能简历挂的?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客企业服务