卡片游戏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ㄒ)/~~)

源代码:

 1 #include<iostream>
 2 #include<queue>
 3 using namespace std;
 4 int main()
 5 {
 6
 7     int n;
 8     while (cin >> n)
 9     {
10         if (n > 1 && n <= 50)    //分情况讨论
11         {
12             queue<int>a;
13             for (int i = 1; i <= n; i++)
14                 a.push(i);
15
16             cout << "Discarded cards: ";
17
18             while (a.size() >= 2)                //先判断再循环
19             {
20                 if (a.size() == 2)
21                 {
22                     cout << a.front();
23                     a.pop();
24                     break;                         //处理输出最后一个元素
25                 }
26                 else
27                 {
28                     cout << a.front() << ", ";//输出当前第一张牌(即要扔掉的牌)
29                     a.pop();                          //把第一张牌丢掉
30                     a.push(a.front());            //把接下来的一张牌放入牌堆底
31                     a.pop();                          //把当前的第一张牌扔掉
32                 }
33                 //n=a.size();
34
35
36             }
37
38             cout << endl;
39             cout << "Remaining card: " << a.front() << endl;
40
41         }
42         else if (n == 1)
43         {
44             cout << "Discarded cards:" << endl;
45             cout << "Remaining card: " << n << endl;
46
47         }
48
49         else
50             break;            //输入0是程序结束
51     }
52       //system("pause");
53       return 0;
54     }

心得:

开始本来vector写,结果不会~~~~(>_<)~~~~,然后用队列,中途各种问题,写出一道题也是如此坎坷,/(ㄒoㄒ)/~~

中间要先判断再循环,不然在输入1时可能就会出错,然后就是输出格式!!

引入:“要调整好心态啊,不然你会很苦恼的”

“沉下心,慢点来”

好好学吧O(∩_∩)O

还是不够努力啊。。。。

(虽然前面的路是黑暗+坎坷。。。。)

     

时间: 2024-12-29 11:56:24

卡片游戏O(∩_∩)O的相关文章

【sicily】卡片游戏

卡片游戏  Time Limit: 1sec    Memory Limit:32MB Description 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. Input 第一行为一个整数t(0<t<40),表示测试用例个数.以下t行每行包含一个整数n(0<n<40),为一个测试用例的牌数. Output 为每个测试用例单独输出一行

NYOJ 905 卡片游戏

卡片游戏 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 小明最近宅在家里无聊,于是他发明了一种有趣的游戏,游戏道具是N张叠在一起的卡片,每张卡片上都有一个数字,数字的范围是0~9,游戏规则如下: 首先取最上方的卡片放到桌子上,然后每次取最上方的卡片,放到桌子上已有卡片序列的最右边或者最左边.当N张卡片全部都放到桌子上后,桌子上的N张卡片构成了一个数.这个数不能有前导0,也就是说最左边的卡片上的数字不能是0.游戏的目标是使这个数最小. 现在你的任务是帮小明写段程序,

Sicily 1931. 卡片游戏

题目地址:1931. 卡片游戏 思路: 纯属数据结构中队列的应用,可以练练手. 具体代码如下: 1 #include <iostream> 2 #include <queue> 3 using namespace std; 4 5 int main() { 6 int t; 7 cin >> t; 8 while (t--) { 9 int num; 10 cin >> num; 11 queue<int> store; 12 for (int

Cocos2d-x游戏开发_战斗算法

我的战斗算法的核心代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 private void aHitb(HeroBean a,HeroBean b){         ///*自身状态(已经移到aHitBTeam那里)         //判断A能否出招或者受到伤害什么的

测试4T2 卡片游戏

问题 E: 卡片游戏 时间限制: 1 Sec  内存限制: 128 MB提交: 42  解决: 18[提交][状态][讨论版] 题目描述 小D举办了元旦联欢活动,其中有一个卡片游戏. 游戏的规则是这样的:有n张卡片,每张卡片上正面写着一个小于等于100的正整数ai,反面都是一样的花色.这n张卡片正面朝下叠成一堆,玩这个游戏的人从中可以抽出连续的k(1≤k≤n)张卡片.如果对于这k张卡片上的数字的平均值a,满足l<=a<=r,那他就可以获得小礼物一件. 小W来玩这个游戏了,她事先通过某些途径知道

1704 卡片游戏

1704 卡片游戏  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 桌面上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张排时进行一下操作:把第一张牌扔掉,然后把新的第一张牌放到整叠牌的最后.输入n.输出每次扔掉的牌,以及最后剩下的牌.. 输入描述 Input Description 输入n 输出描述 Output Description 输出每次扔掉的牌,以及最后剩下的牌 样例输入 Sa

卡片游戏 (关于队列)

一.原题 桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号为1~n.当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后.输入n,输出每次扔掉的牌,以及最后剩下的牌. 样例输入:7 样例输出:1 3 5 7 4 2 6 二.题目源代码 #include<cstdio> #include<queue> using namespace std; queue<int> q; int main() { int n; scanf(&quo

1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结

 1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2d.h" USING_NS_CC; classCardItem :publicCCSprite { public: staticCardItem *create(intidx); boolinit(intidx); CCLabelTTF *ttf; CCSprite *bg; CC_SYNTHESI

卡片游戏(队列)

#include<iostream> #include<queue> using namespace std; queue<int>q; int main() { int n; cin>>n; for(int i=1;i<=n;i++) q.push(i); while(!q.empty()) { cout<<q.front()<<' '; q.pop(); if(!q.empty()) { q.push(q.front());