刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

请填写完整的Josephus问题的C语言函数,以求解给定n个人从第s个人开始报数到第m个人出局的序列问题。在函数中的空白处填入正确的语句。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

(1) s-1    (2) i==k    (3) (i+m-1)%k    (4) A[j]=A[j+1]    (5) A[k-1]=tmp

解析:

Josephus问题是经典的顺序表问题,主要使用一维数组作为数据结构进行求解。整个算法过程是一个从n到1的循环。

对于每个空填的内容,解释如下:

(1)报名起始位置,应该填“s-1”,因为从第s个人开始报数,而数组索引是从0开始的,所以需要减1。

(2)在循环中,当i等于k时,表示当前人数已经只剩下k人,此时应该重新开始报数,所以填“i==k”。

(3)寻找出局位置,应该填“(i+m-1)%k”。这是通过计算当前位置加上m-1后取模k得到的,表示在剩余k人中数到第m个人的位置。

(4)数组A的元素要循环向右移动一个位置,所以填“A[j]=A[j+1]”,即将当前位置的元素值赋给下一个位置的元素。

(5)将出局者的位置交换到第k-1位置,所以填“A[k-1]=tmp”,即将暂存的值赋给第k-1位置。

创作类型:
原创

本文链接:请填写完整的Josephus问题的C语言函数,以求解给定n个人从第s个人开始报数到第m个人出局的序列

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share