约瑟夫问题(能运行,但有点小问题)
有关约瑟夫问题,今天遇到了,,写了几行代码,
能运行,也能产生结果,,,
可是完了就不动了...
这是怎么回事...
代码可能有点复杂,,,,
但只要看结尾部分就好了,为什么运得完了就不动了?
#include "stdio.h"
#define M 100
main()
{
struct child
{
int next;
int num;
}link[M];
int i,k,n,w,s,count;
printf("the number of kids is n=");
scanf("%d",&n);
printf("the start number w=");
scanf("%d",&w);
printf("the number of dead s=");
scanf("%d",&s);
for(i=1;i<=n;i++)
{
link[i].next=i+1;
link[i].num=i;
}
link[n].next=1;
for(i=1;i<=n;i++)
if(link[i].num==w) break;
k=i;
count=0;
while(count<=n)
{
i=1;
while(i!=s)
{
k=link[k].next;
if(link[k].num!=0)
++i;
}
printf("%d\t",link[k].num);
link[k].num=0;
k=link[k].next;
while(link[k].num==0)
k=link[k].next;
count++;
}
system("pause");
}