poj 3750 小孩报数问题 解题报告
2024-10-19 13:37:12
题目链接:http://poj.org/problem?id=3750
约瑟夫问题,直接模拟即可。
#include <iostream>
#include <string>
using namespace std; const int maxn = ; int main()
{
char ch;
int i, n, w, s, num[maxn];
string per[maxn];
while (scanf("%d", &n) != EOF)
{
for (i = ; i < n; i++)
{
cin >> per[i]; // 保存人名
num[i] = i; // 保存人名所对应的编号
}
cin >> w >> ch >> s;
w = w - ; // 严谨写法应为:w = (w-1+n) % n,但题目说w < n,所以这样写也能通过,表示游戏刚开始时第一个报数人的编号,数组下标是从0开始的
do
{
// printf("n = %d\n", n);
w = (w + s - ) % n; // 得出从第w个开始的第s个位置,如果超出n,则mod n 来保证循环
cout << per[num[w]] << endl; // 该人出列
for (i = w; i < n-; i++)
per[i] = per[i+]; // 后面的人顶上出列的人的位置,即都往前挪
} while (--n); // 注意是--n,n--是错误的!!
}
return ;
}
最新文章
- XEN的启动信息输出到“Platform timer is 14.318MHz HPET”就暂停接收的解决办法
- Hololens开发笔记之Gesture手势识别(Manipulation手势控制物体旋转)
- 3n+1b 备忘录方法
- 从github下载某个git库的4种方法
- poj2240 floyd
- easyui combotree 默认 初始化时就选中
- JAVA学习Swing章节JPanel和JScrollPane面板的简单学习
- centos下yum搭建安装linux+apache+mysql+php环境
- http://www.zhihu.com/question/24896283
- Android系统用于Activity的标准Intent
- xshell无法连接centos 6.6的问题
- 重叠I/O之使用完成例程的扩展I/O【系列二】
- Java 编程下使用 Class.forName() 加载类
- arm:启动代码判断是从nand启动还是从norflash启动,拷贝程序到内存的过程
- build path contains duplicate entry:&#39;src&#39; for project &#39;XXX&#39;
- SQL注入-攻入Apple ID钓鱼网站实录
- JavaScript 包装对象
- 【python】笔记
- php curl请求页面数据
- JavaScript和Ajax部分(3)