满意答案
pooakmmwk
2013.08.17
采纳率:46% 等级:8
已帮助:712人
# include
# define SIZE 20
int joseph(int a[],int m,int n)
{
int b[SIZE];
int i;
int flag=0;
int code;
int sum=n;
int point=0;
int num=m;
for(i=0;i
{ b[i]=i+1; }
while(sum!=0)
{
for(i=1;i<=num;i++)
{ if(point>=sum) point=1;
else point++;
}
num=a[point-1];
code=b[point-1];
for(i=point;i<=sum;i++)
{ a[i-1]=a[i];
b[i-1]=b[i];
}
sum--;
flag++;
point--;
printf("已退出%d人,退出的人的编号为%d.\n",flag,code);
}
return 0;
}
main()
{
int m,n,i;
int array[SIZE];
printf("约瑟夫环求解,当前设置最大人数为%d.\n",SIZE);
printf("报数上限:\n");
scanf("%d",&m);
printf("总人数为:\n");
scanf("%d",&n);
for(i=0;i
{
printf("第%d人的密码为:",i+1);
scanf("%d",&array[i]);
}
joseph(array, m, n) ;
return 0;
}
00分享举报