C++算法代码——卡片游戏
作者:互联网
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?cid=1397&pid=2
题目描述
桌上有一叠牌,从第一张牌(即位于顶面的牌)开始从上往下依次编号1~n。当至少还剩两张牌时进行以下操作:把第一张牌扔掉,然后把新的第一张放到整叠牌的最后。输入n,输出每次扔掉的牌,以及最后剩下的牌。
输入
输入只有一个整数n,且n不超过10000。
输出
输出仅有一行为每次扔掉的牌以及最后剩下的牌。注意输出的每张牌号后均有一个空格。
样例输入
7
样例输出
1 3 5 7 4 2 6
作者提示:此题也可以用栈来做,但在这里循环就够了
#include <iostream> #include <cstring> using namespace std; int main(){ int n,t = 1; cin >> n; int a[n+1]; int b[n - 1]; int x = n; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); for (int i = 1;i <= n;i++){ a[i] = i; } while (n > 2){ b[t] = a[1]; for (int i = 2;i <= n;i++){ a[i - 1] = a[i]; a[i] = 0; } a[n] = a[1]; a[1] = 0; for (int i = 2;i <= n;i++){ a[i - 1] = a[i]; a[i] = 0; } t++; n--; } for (int i = 1;i <= x - 2;i++){ cout << b[i] << " "; } for (int i = 1;i <= 2;i++){ cout << a[i] << " "; } }
标签:输出,卡片,int,样例,C++,第一张,算法,扔掉,输入 来源: https://www.cnblogs.com/linyiweiblog/p/14332528.html