注册 登录
编程论坛 C++教室

士兵队列训练问题

return_0 发布于 2020-01-28 17:56, 1761 次点击
某部队进行新兵队列训练,将新兵从 11 开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数…以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
你有答案了吗?

[此贴子已经被作者于2020-1-29 12:33编辑过]

2 回复
#2
return_02020-01-29 12:31
[color=#FFFFFF]大家有答案了吗?
这道题困扰我好久了。。。
[/color]
#3
纯蓝之刃2020-01-29 15:03
程序代码:
#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;
}

1