HDU1276 士兵队列训练问题
题目

AC代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int h[5010];
int main()
{
int t,n;
while(cin>>t)
{
while(t--)
{
cin>>n;
if(n<=3)
{
printf("1");
for(int i=2;i<=n;i++)
printf(" %d",i);
if(n!=0)
printf("\n");
continue;
}
memset(h,0,sizeof h);
int s=n;
int f=1,u;
while(1)
{
if(f)
{
u=0;
for(int i=1;i<=n;i++)
{
if(h[i]!=-1)
{
u++;
if(u==2)
{
u=0;
h[i]=-1;
s--;
}
}
}
f=0;
}
else
{
u=0;
for(int i=1;i<=n;i++)
{
if(h[i]!=-1)
{
u++;
if(u==3)
{
u=0;
h[i]=-1;
s--;
}
}
}
f=1;
}
if(s<=3)
break;
}
int ff=1;
for(int i=1;i<=n;i++)
{
if(h[i]!=-1)
{
if(ff)
printf("%d",i);
else
printf(" %d",i);
ff=0;
}
if(s==0)
break;
}
if(n!=0)
printf("\n");
}
}
return 0;
}
本文来自博客园,作者:斯文~,转载请注明原文链接:https://www.cnblogs.com/zhiweb/p/15483347.html

浙公网安备 33010602011771号