小孩报数问题
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 8929   Accepted: 4191

Description

有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。

Input

第一行输入小孩的人数N(N<=64) 
接下来每行输入一个小孩的名字(人名不超过15个字符) 
最后一行输入W,S (W < N),用逗号","间隔

Output

按人名输出小孩按顺序出列的顺序,每行输出一个人名

Sample Input

5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3

Sample Output

Zhangsan
Xiaohua
Xiaoming
Xiaowang
Lisi

题意在此就不解说了;而此题就是一个循环链表就可以搞定。这很类似于约瑟夫环的问题,唯一区别就在于本题是针对字符串,而约瑟夫环是对排列的数。

代码:

#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<vector>
#include<sstream>
#include<cassert>
using namespace std;
#define LL __int64
struct node {char a[20];struct node *rear;struct node *next;
};node* create(int n) {node *point,*head;head = point = new node;for(int i=2; i<=n; ++i) {point->next=new node;point->next->rear=point;point=point->next;}point->next=head;head->rear=point;return head;
}node* rmove(node* p,int step) {for(int i=1; i<step; ++i) {p=p->next;}return p;
}node* Delete(node *p) {p->rear->next = p->next;p->next->rear = p->rear;p = p->next;return p;
}int main() {int n,w,s;scanf("%d",&n);node *point,*head;head=point=create(n);for(int i = 1; i <= n; ++i) {scanf("%s",point->a);point =point->next;}// printf("head = %s\n",head->a);//printf("point = %s\n",point->a);scanf("%d,%d",&w,&s);point=rmove(head,w);//printf("   %s\n",point->a);while(point->next!=point) {point=rmove(point,s);printf("%s\n",point->a);point=Delete(point);}printf("%s\n",point->a);return 0;
}
/*5
Xiaoming
Xiaohua
Xiaowang
Zhangsan
Lisi
2,3*/

poj3750 小孩报数问题相关推荐

  1. POJ3750 小孩报数问题【模拟】

    小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14909   Accepted: 6647 Descripti ...

  2. POJ--3750 小孩报数问题

    小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12161   Accepted: 5572 Descripti ...

  3. C++ Poj3750 小孩报数问题

    一.题目: http://poj.org/problem?id=3750 二.思路: 1.考虑存储方式:用字符数组存储小孩的名字,如name[65][20]; 2.解决报到尾时不足S,要回到开头从0开 ...

  4. pku 3750 小孩报数问题 解题报告

    小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3376   Accepted: 1597 Descriptio ...

  5. Java 小孩报数问题

    小孩报数问题:有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S ...

  6. B - 小孩报数问题

    B - 小孩报数问题 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人 ...

  7. javastudy-43:小孩报数问题

    43:小孩报数问题 描述 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列( ...

  8. ZCMU-1474: 小孩报数问题(C语言)

    1474: 小孩报数问题 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 473  Solved: 213 [Submit][Status][Web B ...

  9. POJ 3750 小孩报数问题(约瑟夫问题 水题 考验细节、编码能力)

    原题 小孩报数问题 Time Limit: 1000MS Memory Limit: 65536K Description 有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S ...

最新文章

  1. 前途到底是网络工程还是程序设计
  2. 日常make 的小技巧
  3. 交叉编译 FLTK1.3.0
  4. [HIHO1323]回文字符串(区间dp)
  5. Error0---local variable S is accessed from within inner class; needs to be declared final
  6. Android学习笔记——Handler(二)
  7. 《C++ Primer 4th》读书笔记 第7章-函数
  8. dp - Google Code jam Qualification Round 2015 --- Problem B. Infinite House of Pancakes
  9. Vue之webpack之基本使用
  10. VNC viewer双击鼠标出发ctrl+c
  11. 用Python写了一个前端,轻轻松松实现前端梦
  12. Android ndk开发C调用C++
  13. Windows XP下用Modem发送传真(ZZ)
  14. 格林高斯斯托克斯 通量散度旋度
  15. 将视频的以flv格式转换mp4格式
  16. amis eureka_如何构建量身定制的amis来升级您的基础架构
  17. vue +springboot项目部署(nginx)
  18. 论文研读——机器人导航深度局部轨迹重规划与控制
  19. hostname命令的使用
  20. 手机如何测光照度_如何3分钟学会用手机的专业模式拍照?

热门文章

  1. 【附源码】计算机毕业设计SSM社区卫生预约挂号系统
  2. 小觅相机问题解决后开始进行标定的事
  3. 《科研诚信学术规范》MOOC期末
  4. LDA(线性判别分析(普通法))详解 —— python
  5. 黄金矿工问题【动态规化】
  6. Layer和Tier的区别
  7. 基于Python实现成交量的股票数据分析系统【100010993】
  8. 支付宝ETC服务(2019七月新版) 申请-安装-激活-测试
  9. Python 第三方模块 科学计算 SciPy模块6 特殊函数2
  10. android棋牌类游戏之“四川麻将”