编程语言
首页 > 编程语言> > C++算法代码——卡片游戏

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