首先輸出每個小孩子的編號,然後輸出出列的數序,最後輸出留下的小孩的編號
#include<stdio.h>
int Josephus(int *Child,int n,int m);
void main()
{
int *allChild,j,k,l;
scanf("%d%d",&j,&k);
//cin>>j>>k;
if((allChild= new int[j])!=NULL)
{
for(l=0;l<j;l++)
{
printf("%d,",l+1);
//cout<<l+1<<",";
allChild[l]=l+1;
}
printf("\n");
//cout<<endl;
printf("%d",Josephus(allChild,j,k));
//cout<<Josephus(allChild,j,k);
}
}
int Josephus(int *Child,int n,int m)
{
int i=-1,j=0,k=1;
while(1)
{
for(j=0;j<m;)
{
i=(i+1)%n;
if(Child[i]!=-1)
j++;
}
if(k==n)
break;
//cout<<Child[i]<<",";
printf("%d,",Child[i]);
Child[i]=-1;
k=k+1;
}
printf("\n");
//cout<<endl;
return(Child[i]);
}