約瑟夫環問題
n個人(n<=100)圍成一圈,從第一個人開始報數,數到m的人出列,再由下一個人重新從1開始報數,數到m的人再出圈,……依次類推,直到所有的人都出圈,請輸出依次出圈人的編號.
雙鏈表解法
數組模擬(大數組)
#include<iostream>
#include<cstdio>
using namespace std;
int a[100001];//定義數組
int main(){
int bs=1,h=1,t,i,n,m;
cin>>n>>m;
for(i=1;i<=n;i++)
a[i]=i;
t=n+1;
while(h<t){
if(bs!=m){
bs++; //指針前移
a[t]=a[h];
t++;
h++;
}
else{
cout<<a[h]<<" ";//輸出
bs=1;
h++;
}
}
return 0;//返回
}