Movatterモバイル変換


[0]ホーム

URL:


Kolakoski序列的生成——搜狐2018研发类笔试编程题

最新推荐文章于 2024-04-24 08:12:16 发布
原创最新推荐文章于 2024-04-24 08:12:16 发布·630 阅读
· 0
· 0·
CC 4.0 BY-SA版权
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
本文介绍了一个使用C++实现的序列生成算法,该算法通过读取初始数值序列并根据特定规则生成新的数值序列。文中详细展示了如何利用vector容器和循环结构来实现这一过程,并提供了完整的代码示例。

输出描述:

代码如下,菜鸟一枚,欢迎批评指正:

#include <iostream>#include <vector>#include <algorithm>using namespace std;//维护一个count数组,存放每一组输出元素的个数//由于count[i]里存放的是第i组序列所输出的数的个数,所以遍历count的每一个元素,//就能找到第i+1组序列需要输出的数的个数所在count数组中的位置,而根据count的下标//就能确定那一组输出的值,就是第i+1组需要输出的元素个数//不断地递增计数cnt,直到达到n退出int main(){int n;int m;int x;int i;int j;int k;int num = 0;int cnt = 0;vector<int> count;//维护一个数组,存放每一组输出的元素的个数vector<int> vm;while (cin >> n >> m) {vector<int>().swap(vm);if (n > 0 && n < 10000 && m > 1 && m < 1000) {for (i = 0;i < m;++i) {//输入用于生成序列的数,放在数组vm内cin >> x;if (x > 0 && x < 1000) {if (i > 0) {if ((x != vm[i - 1]) && (i != m - 1))vm.push_back(x);else if ((i == m - 1) && x != vm[0]) {vm.push_back(x);}}else if (i == 0)vm.push_back(x);}}vector<int>().swap(count);//清空维护的存放每一组输出几个数的数组while (n) {//一直循环输出,直到达到要求输出的项数n才退出if (count.size() == 0) {for (j = vm[0];j > 0;--j) {cout << vm[0] << endl;//输出vm[0]的值cnt++;if (cnt == n) {cnt = 0;n = 0;break;}}count.push_back(vm[count.size()]);//当输出的是序列第一组时,count[0]里存放vm[0]的值}else if (count.size() == 1 && vm[0] == 1) {int a;for (a = 0;a < vm[1];++a) {cout << vm[1] << endl;cnt++;if (cnt == n) {cnt = 0;n = 0;break;}}count.push_back(vm[1]);//当vm[0]是1的时候,count[1]存放的是vm[1]}else {for (k = 0; k < count.size();k++) {for (j = 0;j < count[k];++j) {num++;if (num == count.size() + 1) {num = 0;count.push_back(vm[k%m]);for (int a = 0;a < vm[k%m];++a) {cout << vm[(count.size() - 1) % m] << endl;cnt++;if (cnt == n) {cnt = 0;n = 0;break;}}k = count.size() - 1;break;}}}}}}}return 0;}


确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
参与评论您还未登录,请先登录后发表或查看评论

博客等级

码龄14年
23
原创
40
点赞
79
收藏
18
粉丝
关注
私信

TA的精选

查看更多

大家在看

TA的历史创作历程

分类专栏

展开全部收起

上一篇:
2018阿里秋招C/C++研发编程题——字符串处理

目录

展开全部

收起

目录

展开全部

收起

上一篇:
2018阿里秋招C/C++研发编程题——字符串处理

目录

评论
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp