Josephus问题,
Leeu 2003-09-12 10:30:47 设有N个的围坐在一个圆桌,现从第S个的开始报数,数到第M 的个出列,然后从出列的下一个人重新开始报数,数到第M的人又出列,如此重复到所有人出列,求出出列的顺序。现一般化,N=8,S=1,M=4。
我自己按书上用C语言编一个程序,但就是调试不出来,我不知道自己的程序错在何处,请兄弟帮帮忙,指导下。
(我把它倒序排在同一个数组中)
#include <stdio.h>
void main()
{
int i,j,w,s1,a[9]={0,1,2,3,4,5,6,7,8};
s1=1;
for(i=8;i>1;i--)
{
s1=(s1+4-1)%i;
if(s1=0) s1=i;
w=a[s1];
for(j=s1;j<=i;j++)
a[j]=a[j+1];
a[i]=w;
}
for(i=8;i>0;i--)
printf("%d ",a[i]);
}
我现在大三了,学计算机的,这是数据结构上的问题,郁闷的是学校用的是PASCAL语言版,我们没学那,就学了C,搞得---------唉
我的QQ31935199
E-MAIL:yidian14159@163.com
想找几个兄弟讨论学习中遇到的问题