poj 3032 nyoj 714 Card Trick

題目鏈接:http://acm.nyist.net/JudgeOnline/problem.php?pid=714

此題是河南省ACM省賽的題,基本上都做出來了;

題目大意是:有n張牌,找到一個順序,使得第一次把上面一張取出放到最下面,然後取出最上面一張是一,第i次把上面i張取出放到最下面,然後取出一張是i;

本題也沒啥技巧,就是模擬;


參考代碼如下:


#include <iostream>
#include <cstring>
using namespace std;
int a[14];
int flag[14];
int n;
void execute()
{
	if(n==1)
	{
		cout<<1<<endl;
		return ;
	}
	memset(flag,0,sizeof(flag));
	int i,len=0,t=1,k=0,sum=0;
	while(len<n)
	{
		while(sum!=t+1)
		{
			k++;
			if(k==n+1)
				k=1;
			if(flag[k]==0)
				sum++;
		}
		a[k]=t;
		flag[k]=1;
		t++;
		sum=0;
		len++;
	}
	for(i=1;i<=n;i++)
		cout<<a[i]<<' ';
	cout<<endl;
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		cin>>n;
		execute();
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章