ACM复习(13)8612 发牌
2017-11-25 20:10
302 查看
Description
ACM队员去其它城市参加亚洲区预赛往往要坐10多个小时的火车。在车上为了打发时间,有时他们也玩纸牌。下面是一个关于发牌的问题。
现有发牌人手上有N张牌,先把放在最上面的牌放到桌上,接着把剩下的N-1张牌最上面的一张取出放到这叠牌的最下面。这样算完成了一次操作。接着再次将最上面一张放到桌上,把剩下的N-2张牌最上面的一张取出放到最下面……直到最后一张牌被放到桌面上。
举个例子:
一开始手上的牌分别是1,2,3,4,(从上到下),先把1放在桌上,然后把2放在4的后面,所以手上的牌就是3,4,2了,接着把3放在桌上,把4放在2的后面,这时手上的牌就是2,4了,不断重复这个过程,直到手上的牌都放到桌面为止。
现在,如果告诉你牌的总数N(编号为1到N),以及最终这N张牌放到桌面上的顺序正好是1,2,3,….,N。
问最开始放在手上的那N张牌的顺序!!
输入格式
多行,一行一个正整数N。(1<=N<=500)
最后一行是0,表示结束,不用处理
输出格式
每行一个排列,数与数之间用空格隔开。
输入样例
2
3
0
输出样例
1 2
1 3 2
ACM队员去其它城市参加亚洲区预赛往往要坐10多个小时的火车。在车上为了打发时间,有时他们也玩纸牌。下面是一个关于发牌的问题。
现有发牌人手上有N张牌,先把放在最上面的牌放到桌上,接着把剩下的N-1张牌最上面的一张取出放到这叠牌的最下面。这样算完成了一次操作。接着再次将最上面一张放到桌上,把剩下的N-2张牌最上面的一张取出放到最下面……直到最后一张牌被放到桌面上。
举个例子:
一开始手上的牌分别是1,2,3,4,(从上到下),先把1放在桌上,然后把2放在4的后面,所以手上的牌就是3,4,2了,接着把3放在桌上,把4放在2的后面,这时手上的牌就是2,4了,不断重复这个过程,直到手上的牌都放到桌面为止。
现在,如果告诉你牌的总数N(编号为1到N),以及最终这N张牌放到桌面上的顺序正好是1,2,3,….,N。
问最开始放在手上的那N张牌的顺序!!
输入格式
多行,一行一个正整数N。(1<=N<=500)
最后一行是0,表示结束,不用处理
输出格式
每行一个排列,数与数之间用空格隔开。
输入样例
2
3
0
输出样例
1 2
1 3 2
解题思路
这道题其实就是 m = 2 的1139 约瑟夫环问题,代码思路直接参考就行#include<stdio.h> int main() { int num[502], n, space, start; while(scanf("%d", &n) && n != 0) { start = space = 0; for(int i = 0; i < 502; i ++) num[i] = 0; for(int i = 1; i <= n; i ++) { if(i == 1) num[0] = 1; else if(i == n) { for(int k = 0; k < n; k ++) { if(num[k] == 0) { num[k] = i; break; } } } else { for(int j = start + 1; ; j ++) { if(j == n) j -= n; if(num[j] == 0) { space ++; if(space == 2) { num[j] = i; start = j; space = 0; break; } } } } } for(int i = 0; i < n; i ++) printf("%d ", num[i]); printf("\n"); } return 0; }
相关文章推荐
- HTML5复习 (13)
- ACM复习(12)8618大牛之路II
- ACM复习(32)9508 诸葛给我牌
- 13:ASP.NET复习系列- ASP.NET基本知识点- ASP.NET程序的部署
- [ACM] hdu 1231 最大连续子序列 (动规复习)
- ACM-动态规划13-最大上升子序列和
- ACM复习(46)10690 分面包
- ACM复习(15)8614 素数
- c\c++复习基础要点13---容器deque
- ACM复习(30)9505 射了多少
- 2013-2014 ACM ICPC Central European Regional Contest (CERC 13) K题(dp)
- 剑指Offer算法题JAVA版13-20题(全是个人写的非官方,只供参考和自己复习,测试用例都通过了。)
- 例题7-13 快速幂计算(Power Calculus, ACM/ICPC Yokohama 2006, UVa1374)
- ACM复习(8)1143 多少个Fibonacci数
- 嵌入式复习13
- ACM基础算法复习(STL + DFS + BFS + 并查集 + 快速幂 + 欧几里得算法)
- ACM复习(20)8627 数独
- 考研复习(13)-指令系统
- (复习)基础算法--搜索--深入训练(USACO-Feb08、WOW模拟赛Day2-T4、USACO-Dec13、CTSC-1999)
- [置顶] ACM复习专项