约瑟夫问题
的有关信息介绍如下:
C++代码示例: #include using namespace std; void main() { int n,m,a[31],k,i,j,num; //计数器是从1开始的,所以30个人用31 n=30; m=9; for(i=1;i<=n;i++) { a[i]=1;//赋值1表示此人还在船上,0表示被扔进海里,同理链表 } j=0;//用来计数,当数到9个还在船上的人时重新赋值为0,并且当前人赋值为0,即扔进海 k=0;//用神困来表示已经扔下海里的人数 //下面的循环就很简单了,就是数够人赋值为0扔下海,并且用k计数看是否数组到边界,到了边界就从0继续开始 for(i=1;i<=n+1;i++){ if(a[i]==1){ j=j+a[i]; if(j==m) { j=0; a[i]=0; k++; } if(k==15){//此处可以输出了,表示已经扔下海15人 break; } } if(i==n+1)//这段是数组里循环表示的方法,楼主可跳过 i=0; }//最后楼主自己写输出,利用链表挨个查找当前为1的项输出即可 }楼主先看这个代码,这是一个简单的约瑟夫问题的代码,用的c++,保存数据用的是数组,具体要修改的部分我接下来详细说明首先,请定义一个简单数据结构用来代替上面的数组,这个我相信楼主你肯定会其次,对于上面的输入输困碧出,换成c语言最游尺念后,特别需要说明的我都用注释的形式标注了好了,代码百度搜索的,注释我自己写的,不给分没道理了附上一个约瑟夫的百度百科,里面有详细的解题思路http://baike.baidu.com/view/213217.htm?fr=ala0_1