士兵队列训练问题
某部队进行新兵队列训练,将新兵从 11 开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数…以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。你有答案了吗?
[此贴子已经被作者于2020-1-29 12:33编辑过]
程序代码:#include <iostream>
using namespace std;
int main()
{
int n,i,j=0,temp=3;
cout<<"Input:"<<endl;
cin>>n;
int array[n+1]={0};
for(i=1;i<=n;i++)
array[i]=i;
do
{
j=1;
if(temp%3==0)
temp--;
else
temp++;
for(i=1;i<=n;i++)
{
if(i%temp!=0)
array[j++]=array[i];
}
n=j-1;
}while(j>4);
cout<<"Output:"<<endl;
for(i=1;i<j;i++)
cout<<array[i]<<" ";
cout<<endl;
return 0;
}
