ajxbobo 发表于 2020-5-2 22:06:35

有人能帮忙解决这个问题吗?

本帖最后由 ajxbobo 于 2020-5-5 15:06 编辑

约瑟夫环问题:设编号为1,2,3,……,n的n(n>0)个人按顺时针方向围坐一圈,m为任意一个正整数。从第一个人开始顺时针方向自1起顺序报数,报到m时停止并且报m的人出列,
再从他的下一个人开始重新从1报数,报到m时停止并且报m的人出列。如此下去,直到所有人全部出列为止。要求设计一个程序模拟此过程,对任意给定的m和n,求出出列编号序列。用顺序表实现。

(求代码和思路。最好能有较为详细的思路和注释)你们能帮帮我吗?!!!拜托了!!

抱歉,之前忘记了写了需要用   C语言来写

liuzhengyuan 发表于 2020-5-2 22:18:21

请问是什么语言?

如果有布尔类型的话,就做一个布尔类型的数组(如果没有用整形也可以代替——出列了为 0 没出列为 1)
数组默认全是 1

反复循环,如果出列了就把元素变成 0

冰河星云 发表于 2020-5-3 08:14:27

liuzhengyuan 发表于 2020-5-2 22:18
请问是什么语言?

如果有布尔类型的话,就做一个布尔类型的数组(如果没有用整形也可以代替——出列了为 ...

是数据结构与算法

liuzhengyuan 发表于 2020-5-3 08:15:22

冰河星云 发表于 2020-5-3 08:14
是数据结构与算法

好吧{:10_269:}
ta说求代码与思路的呀

冰河星云 发表于 2020-5-3 08:16:29

liuzhengyuan 发表于 2020-5-3 08:15
好吧
ta说求代码与思路的呀

好像用的是c语言

赚小钱 发表于 2020-5-8 21:18:44

1. 初始化一个 n 个节点的环形链表,每个节点有对应的编号
2. 设置 current = head,index = 1
3. current = current ->next, index += 1
4. if index == m;temp = current; delete(current); current = temp->next 设置 index = 1,
5. if current == current.next; return
6. goto 3
页: [1]
查看完整版本: 有人能帮忙解决这个问题吗?