卡片游戏O(∩_∩)O
2015-07-17 20:48
585 查看
题目大意:
桌上有N(N<=50)张牌,从第一张开始(最上面的),从上往下依次编号为1~n。当至少还剩下两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张牌放到正堆牌的最后,输入每行包含一个n,输出每次扔掉的牌以及最后剩下的牌。
样例如下:
Sample Input
7
19
10
6
0
Sample Output
Discarded cards: 1, 3, 5, 7, 4, 2
Remaining card: 6
Discarded cards: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 4, 8, 12, 16, 2, 10, 18, 14
Remaining card: 6
Discarded cards: 1, 3, 5, 7, 9, 2, 6, 10, 8
Remaining card: 4
Discarded cards: 1, 3, 5, 2, 6
Remaining card: 4
思路分析:
利用队列的知识,首先把1~N这几个数Push到队列中去,然后模拟题目描述的那样,删除第一个元素,把第二个元素放到牌堆底,直到剩下最后一张牌~~~中间也要注意一些问题,比如输出时不要多逗号,最后一行不要换行!!!!比赛时也要看清题目是否需要输出空格(简直不能再坑!/(ㄒoㄒ)/~~)
源代码:
心得:
开始本来vector写,结果不会~~~~(>_<)~~~~,然后用队列,中途各种问题,写出一道题也是如此坎坷,/(ㄒoㄒ)/~~
中间要先判断再循环,不然在输入1时可能就会出错,然后就是输出格式!!
引入:“要调整好心态啊,不然你会很苦恼的”
“沉下心,慢点来”
好好学吧O(∩_∩)O
还是不够努力啊。。。。
(虽然前面的路是黑暗+坎坷。。。。)
桌上有N(N<=50)张牌,从第一张开始(最上面的),从上往下依次编号为1~n。当至少还剩下两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张牌放到正堆牌的最后,输入每行包含一个n,输出每次扔掉的牌以及最后剩下的牌。
样例如下:
Sample Input
7
19
10
6
0
Sample Output
Discarded cards: 1, 3, 5, 7, 4, 2
Remaining card: 6
Discarded cards: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 4, 8, 12, 16, 2, 10, 18, 14
Remaining card: 6
Discarded cards: 1, 3, 5, 7, 9, 2, 6, 10, 8
Remaining card: 4
Discarded cards: 1, 3, 5, 2, 6
Remaining card: 4
思路分析:
利用队列的知识,首先把1~N这几个数Push到队列中去,然后模拟题目描述的那样,删除第一个元素,把第二个元素放到牌堆底,直到剩下最后一张牌~~~中间也要注意一些问题,比如输出时不要多逗号,最后一行不要换行!!!!比赛时也要看清题目是否需要输出空格(简直不能再坑!/(ㄒoㄒ)/~~)
源代码:
#include<iostream> #include<queue> using namespace std; int main() { int n; while (cin >> n) { if (n > 1 && n <= 50) //分情况讨论 { queue<int>a; for (int i = 1; i <= n; i++) a.push(i); cout << "Discarded cards: "; while (a.size() >= 2) //先判断再循环 { if (a.size() == 2) { cout << a.front(); a.pop(); break; //处理输出最后一个元素 } else { cout << a.front() << ", ";//输出当前第一张牌(即要扔掉的牌) a.pop(); //把第一张牌丢掉 a.push(a.front()); //把接下来的一张牌放入牌堆底 a.pop(); //把当前的第一张牌扔掉 } //n=a.size(); } cout << endl; cout << "Remaining card: " << a.front() << endl; } else if (n == 1) { cout << "Discarded cards:" << endl; cout << "Remaining card: " << n << endl; } else break; //输入0是程序结束 } //system("pause"); return 0; }
心得:
开始本来vector写,结果不会~~~~(>_<)~~~~,然后用队列,中途各种问题,写出一道题也是如此坎坷,/(ㄒoㄒ)/~~
中间要先判断再循环,不然在输入1时可能就会出错,然后就是输出格式!!
引入:“要调整好心态啊,不然你会很苦恼的”
“沉下心,慢点来”
好好学吧O(∩_∩)O
还是不够努力啊。。。。
(虽然前面的路是黑暗+坎坷。。。。)
相关文章推荐
- HDU 3065 病毒侵袭持续中(AC自动机)
- 解决冲突(避免冲突)
- 汇编语言得玩转
- POJ 2003 Hire and Fire (多重链表 树结构 好题)
- 2015 HUAS Summer Training#1 B
- Oracle和SQL SERVER在SQL语句上的差别
- 【rqnoj39】 饮食问题
- php判断假图片的方法
- javaWeb面试题
- IP协议和TCP协议的分析
- hdu 2680 Choose the best route
- DFS深度搜索的一般思想
- 线性筛法及扩展
- UVA - 11995 I Can Guess the Data Structure!
- 1009. Product of Polynomials (25)
- hdu 3074 Multiply game(线段树)
- [献给想深入学习Linux开发的网友] Linux 应用程序开发到内核开发的简明指南。
- 【rqnoj28】[Stupid]愚蠢的宠物
- Unique Paths
- 1005. Spell It Right (20)