您的位置:首页 > 其它

hdu(1276)士兵队列训练问题

2013-08-19 15:47 281 查看
题意很清楚,但要注意一点,就是判断for循环结束的条件是:

就在在这一轮报完之后,m==3,即可结束。。

#include"stdio.h"

#include"string.h"

int main()

{

int n,m,k,i,s,t;

int a[6000];

scanf("%d",&k);

while(k--)

{

scanf("%d",&n);

for(i=1;i<=n;i++)

a[i]=1;

m=n;

while(m>3)

{

s=0;

for(i=1;i<=n;i++)

{

if(a[i]==1)

{ s++;

if(s==2)

{

a[i]=0;

s=0;

m--;

}

}

}

if(m==3)//判段结束的条件要放在外边。。因为每一轮都要报完。。就在这错了几次。。

break;

t=0;

for(i=1;i<=n;i++)

{

if(a[i]==1)

{ t++;

if(t==3)

{

a[i]=0;

t=0;

m--;

}

}

}

}

for(i=1;i<=n;i++)

if(a[i])

{

printf("%d",i);a[i]=0;

break;

}

for(i=1;i<=n;i++)

if(a[i])

printf(" %d",i);

printf("\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: