WA-AC
其实最初的自己一下子蒙住了,不知道怎么做,看了别人的思路之后懂了。也就是简单的模拟,要注意的就是我代码中提醒的,注意这些就OK了。。
#include <stdio.h>
int main()
{
int n,a,i,j,t;
int s[5009];
while(scanf("%d",&n)==1)
{
while(n--)
{
scanf("%d",&a);
for(i=1;i<=a;i++)
{
s[i]=i;
}
if(a<=3)//这是最需要注意的,因为题目中告诉不超过三人为止
{
printf("1");
for(i=2;i<=a;i++)
{
printf(" %d",s[i]);
}
printf("\n");
continue;
}
while(1)
{
int count =0;
for(i=1;i<=a;i++)//一旦等于2就给赋值为-1,不破坏原来的顺序
{
if(s[i]!=-1)
count++;
if(count==2)
{
count=0;
s[i]=-1;
}
}
t=0;
for(i=1;i<=a;i++)//判断是否少于3个人,要注意的就是每一次的循环必须进行完
if(s[i]!=-1)
t++;
if(t<=3)
break;
count=0;
for(i=1;i<=a;i++)
{
if(s[i]!=-1)
count++;
if(count==3)
{
count=0;
s[i]=-1;
}
}
t=0;
for(i=1;i<=a;i++)
if(s[i]!=-1)
t++;
if(t<=3)
break;
}
for(i=1;i<=a;i++)
{
if(s[i]!=-1)
{
printf("%d",s[i]);
j=i;
break;
}
}
for(i=j+1;i<=a;i++)
{
if(s[i]!=-1)
{
printf(" %d",s[i]);
}
}
printf("\n");
}
}
return 0;
}