小孩报数问题
来源:互联网 发布:电大好还是网络教育好 编辑:程序博客网 时间:2024/06/11 19:34
Description
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
Input
第一行输入小孩的人数N(N<=64)
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号","间隔
接下来每行输入一个小孩的名字(人名不超过15个字符)
最后一行输入W,S (W < N),用逗号","间隔
Output
按人名输出小孩按顺序出列的顺序,每行输出一个人名
Sample Input
5XiaomingXiaohuaXiaowangZhangsanLisi2,3
Sample Output
ZhangsanXiaohuaXiaomingXiaowangLisi普通版:#include<iostream>#include<cstring>using namespace std;int main() { char name[56][16]; int n, w, s; cin >> n; for (int i = 1; i <= n; i++) { cin >> name[i]; } scanf("%d,%d", &w, &s); int count = 0; //记录经过未标记的名字几次 int k = 0; //记录输出的次数 for (int i = w; k!=n ; i++) { //输出 n 次,跳出 if (i > n) i = i % n; //循环 1~n~1~n if (strcmp(name[i], "1")) count++; //经过未标记的名字时 count++ if (count == s) { //经过s次未被标记的名字时 cout << name[i] << endl; k++; //输出一次 k++ count = 0; //输出以后count重新记数 w = i; //输出之后,w 重新从 i 开始 strcpy(name[i], "1"); //已经输出的名字标记为 1 } } return 0;}线性表:#include<iostream>#include<string>using namespace std;class SeqList {public: SeqList(string str[], int n); //构造函数,创建长度为n 的线性表 string Delete(int i); //输出并删除结点 int getLength() { return length; } //获取长度private: int length; string name[65];};SeqList::SeqList(string str[], int n) { //实现构造函数 for (int i = 0; i < n; i++) { name[i] = str[i]; } length = n;}string SeqList::Delete(int i) { string x = name[i - 1]; //定义一个x接收被删除的字符串 for (int j = i; j < length; j++) { //从被删除的结点开始,后面的向前移动,覆盖被删除的结点 name[j - 1] = name[j]; } length--; //删除一个结点,长度减 1 return x;}int main() { string str[65]; int n, w, s; cin >> n; for (int i = 0; i < n; i++) { cin >> str[i]; } scanf("%d,%d", &w, &s); SeqList S(str, n); while(n--) { int ans = (w + s - 1); //ans 表示要输出的名字的序号 if ( ans==S.getLength() ) { w = ans; cout << S.Delete(w) << endl; } else { if (ans % S.getLength() != 0) { w = ans % S.getLength(); cout << S.Delete(w) << endl; } else { cout << S.Delete(w--) << endl; } } } return 0;}
0 0
- 小孩报数问题
- poj3750 小孩报数问题
- 小孩报数问题
- 小孩报数问题
- 小孩报数问题3750
- 小孩报数问题
- 小孩报数问题
- poj3750 小孩报数问题
- 小孩报数问题
- 小孩报数问题
- POJ 3750 小孩报数问题
- pku-3750 小孩报数问题
- Poj 3750 小孩报数问题
- poj 3750 小孩报数问题
- 小孩报数问题(poj 3750)
- poj 3750 小孩报数问题
- poj 3750 小孩报数问题
- POJ 3750 小孩报数问题
- Linux下常用vim操作快捷键
- UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用
- (error/warning)java Unsafe等改变安全性的类怎样去掉eclipse错误提示
- 常用网页刷新或跳转的方法
- iOS中页面跳转
- 小孩报数问题
- sleep()和wait()方法的区别
- 贪心算法
- 关于catkin_make xbo_face_msgs
- 转载其他网站--IIFE
- MySQL 数据库常用命令
- 简单介绍java Enumeration
- Apple Watch死机怎么办?Apple Watch怎么强制
- 使用nginx服务器时,php获取用户ip的方法