题目

试题四

阅读以下函数说明和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;

}

}

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