题目

试题四

 阅读以下函数说明和C语言函数,将应填入  (n)  处的字句写在对应栏内。 

  【说明】

    这是一个求解Josephus问题的函数。用整数序列1,2,3…,n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。Josephus问题描述,设n个人围坐在一个圆桌周围,现在从第s个人开始报数,数到第m个人,让他出局;然后从出局的下一个人重新开始报数,数到第m个人,再让他出局,…如此反复直到所有的人全部出局为止。 

   【C函数1】

    void Josephus(int A[],int n,s,m)

    (int i,j,k,temp;

    if(m==O){

    printf("m=0是无效的参数!\n");

    return;

    }

    for(i=0;i<n;i++)    A[i]=i+1;  /*初始化,执行n次*/

    i=  (1)     /*报名起始位置*/

    for(k=n;k>1;k-){

    if(  (2)  )  i=0;

    i=  (3)   /*寻找出局位置*/

    if(i!=k-1){

    tmp=A[i];

    for(j=i;j<k-1;j++)  (4)  ;

     (5)  ;

    }

    }

    for(k=0;k<n/2;k++){

    tmp=A[k];A[k]=A[n-k+1];A[n-k+1]=tmp;

    }

    } 

作答
本题暂不支持做答,请点击“解析“以对比解题思路
答案/解析
查看试卷及答案