猴子选大王 不是围成圈

来源:百度知道 编辑:UC知道 时间:2024/05/21 23:36:35
n只猴子选大王,方法如下:从头到尾报数,1,2,3,凡是报3 的就退出,余下的再从尾到头,也是,1,2,3,报数,凡是报3的退出。依此类推剩下的两只猴子报数为1的就是王。
问要想当猴王,最初得站什么位置?用(C语言,VB,C++分别编写)

在 devcpp 可以这样运行.
#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
int interval=0,n=0,N,i;
cout<<"Please input the number of monkey."<<endl;
cin>>N;
int num[N];

for(i=0;i<N;i++)
num[i]=i;
i=0;
while(n<N)
{
if(num[i]!=-1)
{
interval++;
if(interval==3)
{
num[i]=-1;
interval=0;
n++;
for(int j=0;j<N;j++)
if(num[j]!=-1)
cout<<setw(5)<<num[j];
cout<<endl;;
}
}
i++;
if(i==N)
i=0;
}
if(i==0)
i=N;
cout<<"The best position is No."<<i;
cout<<endl;
system("pause");
}