http://poj.org/problem?id=3032
题意:
第1次把1张牌放到最底端,然后翻开最上面的牌,拿走;
第2次把2张牌放到最底端,然后翻开最上面的牌,拿走;
……
第n次把n张牌放到最底端,然后翻开最上面的牌;
要求翻开牌的字母是:A、2、3 …… K
分析:如下图,模拟翻牌的过程
#include <iostream>
#include <cstdio>
#include <cstring>
#include <deque>
using namespace std;
int main()
{
int T,i,j,n,t,a[20];
deque<int>dq1;
scanf("%d",&T);
while(T--)
{
dq1.clear();
scanf("%d",&n);
for(i=n;i>0;i--)
dq1.push_front(i);
for(i=1;i<=n;i++){
j=i;
while(j--){
t=dq1.front();
dq1.pop_front();
dq1.push_back(t);
}
t=dq1.front();
dq1.pop_front();
a[t]=i;
}
for(i=1;i<n;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);
}
return 0;
}