满意答案
cqwei2000
2013.05.20
采纳率:52% 等级:12
已帮助:11513人
约瑟夫环的问题,我给你一个,程序首先输入小孩子个数,然后输入W
首先输出每个小孩子的编号,然后输出出列的数序,最后输出留下的小孩的编号
#include
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
{
printf("%d,",l+1);
//cout<
allChild[l]=l+1;
}
printf("\n");
//cout<
printf("%d",Josephus(allChild,j,k));
//cout<
}
}
int Josephus(int *Child,int n,int m)
{
int i=-1,j=0,k=1;
while(1)
{
for(j=0;j
{
i=(i+1)%n;
if(Child[i]!=-1)
j++;
}
if(k==n)
break;
//cout<
printf("%d,",Child[i]);
Child[i]=-1;
k=k+1;
}
printf("\n");
//cout<
return(Child[i]);
}
01分享举报