士兵队列

#include<cstdio>
#include<iostream>
using namespace std;
const int N=5005;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,a[N]={0};
scanf("%d",&n);
int n1=n,m=2,j,i;
while(n1>3)
{
for(i=1,j=1;i<=n;i++)
{
if(!a[i])
{
if(j%m==0)
{
a[i]++;
n1--;
}
j++;
}
// cout<<i<<' '<<j<<' '<<n1<<' '<<m<<endl;
}
m=(m==2?3:2);
}

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

if(!a[i])
{
n1--;
if(n1==0)break;
printf("%d ",i);
}
printf("%d ",i);

}
return 0;
}

心得:

测试代码,错误代码先不要删注释掉,因为后面可能还需要用到前面的

原文地址:https://www.cnblogs.com/www-yangjing-com/p/7204013.html