CSU-ACM2017暑期训练1-Debug与STL -圆桌问题
来源:互联网 发布:淘宝买快排配件有事吗 编辑:程序博客网 时间:2024/06/06 03:51
题目链接:圆桌问题、
题目:
圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。
2 32 4
GBBGBGGB
思路:以前用的循环来判断位置,因为每次都有人要离开,直接用取模是不可行的,这次用vector模拟圆环,走一个删一个,但是要注意取 模边界和删除走的人为最后一个时下一个人的坐标的改变
代码:
#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <vector>using namespace std;char vis[66666];vector<int>p;int n,m,N;int pos;int flag=0;int main(){ while(scanf("%d%d",&n,&m)!=EOF) { p.clear(); memset(vis,'G',sizeof(vis)); N=2*n; pos=1; for(int i=1;i<=N;i++) p.push_back(i); while(N>n) { pos=pos+m-1; if(pos>N) { pos%=N; if(pos==0) pos=N; } vis[p[pos-1]]='B'; p.erase(p.begin()+pos-1); if(pos==N) pos=1; N--; } N=2*n; for(int i=1;i<=N;i++) { printf("%c",vis[i]); if(i%50==0) printf("\n"); } printf("\n\n"); } return 0;}
阅读全文
0 0
- CSU-ACM2017暑期训练1-Debug与STL -圆桌问题
- Languages CSU-ACM2017暑期训练1-Debug与STL
- CSU-ACM2017暑期训练1-Debug与STL hdu2736
- CSU-ACM2017暑期训练1-Debug与STL hdu1896-Stones
- CSU-ACM2017暑期训练1-Debug与STL B
- CSU-ACM2017暑期训练1-Debug与STL A
- CSU-ACM2017暑期训练1-Debug与STL C
- CSU-ACM2017暑期训练1-Debug与STL E
- Languages--CSU-ACM2017暑期训练1-Debug与STL
- Train Problem I CSU-ACM2017暑期训练1-Debug与STL
- CSU-ACM2017暑期训练1-Debug与STL Jury Marks-set判重
- CSU-ACM2017暑期训练1-Debug与STL C-Languages-map判重
- CSU-ACM2017暑期训练1-Debug与STL hdu1022-Train Problem I
- CSU-ACM2017暑期训练3-递推与递归 G
- CSU-ACM2017暑期训练3-递推与递归I
- CSU-ACM2017暑期训练3-递推与递归 J
- CSU-ACM2017暑期训练3-递推与递归 J
- CSU-ACM2017暑期训练3-递推与递归 H
- uva1149--贪心
- C++运算符重载(+,-,!)
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 初入python
- 【python学习笔记】18:numpy数组函数与矩阵运算
- CSU-ACM2017暑期训练1-Debug与STL -圆桌问题
- java程序----for循环
- xgboost 二分类问题实例
- ACL 通配符掩码的应用
- Oracle sql 性能优化调整
- test-wky
- C++之初始化问题
- 进程与线程的区别
- 面向对象