士兵队列训练问题
某部队进行新兵队列训练,将新兵从 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; }