壹般C++來寫,代碼裏只有幾個註釋,不懂的話就問吧!
代碼如下:
# include & ltiostream.h & gt
結構環
{
int * NumCan
int len
};//用來模擬壹個遊戲團隊。
int * Order//用於存儲出隊順序。
void main()
{
int n,m;//人數和m
int pos =-1;//開始位置
cout & lt& lt“請輸入參與遊戲的人數:“;
CIN & gt;& gtn;
克裏爾*集團;
組=新圈;
組->;NumCan = new int[n];
order = new int[n];
組->;len = n;
while(1)
{
cout & lt& lt“請確認起始位置(1-)
CIN & gt;& gtpos
如果(pos & lt= n & amp& amppos & gt= 1)break;
else cout & lt& lt“輸入位置錯誤!”& lt& ltendl
}
pos-;
cout & lt& lt"請輸入m的值:";CIN & gt;& gtm;
cout & lt& lt"開始遊戲:"
int k;
for(int I = 0;我& ltn;i++)組-& gt;NumCan[I]= 1;//表示人在隊伍裏。
while(組->;len)
{
pos =(pos+m)% n;//這裏取余數體現了循環利用的思想。
如果(!組->;NumCan[pos])繼續;//如果這個位置沒有人,繼續循環;
//有人
cout & lt& ltpos+1 & lt;& lt“位置:滾出隊列!”& lt& ltendl
組->;NumCan[pos]= 0;
組->;len-;
訂單[組->;len]= pos;
}
cout & lt& lt“遊戲結束!”& lt& ltendl
cout & lt& lt出隊順序是:“< & ltendl
for(I = 1;我& ltn;i++)
cout & lt& lt訂單[n-I]+1 & lt;& lt",";
cout & lt& lt訂單[n-I]+1 & lt;& ltendl
}