If(s1==0) /*如果s1為0,表示最後壹個人開始報數*/
s 1 =(s 1+m-1)% I;S1號;m後出;I .當前未出局的剩余人數;
/* VC++ 6.0已編譯。抱歉,由於系統原因,暫時不支持中文註釋。
代碼是英文的.....希望能看懂。
*/
# include & ltiostream & gt
使用命名空間std
void Cal_Out_Sort(int S_start,int m,int total);
//////////////////main()/////////////////////////////
void main()
{
int S_start,M,Total _ NO
cout & lt& lt”請為Total_NO輸入壹個數字:\ n”;
CIN & gt;& gtTotal _ NO//它有多少num
cout & lt& lt”請為M輸入壹個數字:\ n”;
CIN & gt;& gtm;//哪個要出
cout & lt& lt”請為S輸入壹個數字:\ n”;
CIN & gt;& gtS _ start//開始編號
Cal_Out_Sort(S_start,M,Total _ NO);
}
//////////////////排序///////////////////////////////
void Cal_Out_Sort(int S_start,int m,int total)
{
int * NO = new int[total];//對於數字1 ~總計
int * Out = new int[total];//輸出排序的數目
int S = S _ start-1;
int Now _ Total = total
for(int I = 0;我& lt總計;i++)
NO[I]= I+1;
int Out _ Count = 0;
while(Out _ Count & lt;總計-1)
{
s =(s+m)% Now _ Total;// s位置輸出
Out[Out _ count++]= NO[s];
for(int I = s;我& ltNow _ Totali++)
NO[I]= NO[I+1];
now _ Total-;
s-;
}
Out[Out _ Count]= NO[0];
for(I = 0;我& lt總計;i++)
cout & lt& ltout[I]& lt;& ltendl
}