任务7:求解约瑟夫问题——结构数组
上一节
下一节
1. 任务要求
这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事。15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第9个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。
2. 任务目标
认识结构体,学习结构数组的定义、初始化及其应用。
学习将问题抽象为一系列数据的运算。逐步建立问题→算法→数据→变量→表达式→程序→测试→测试的程序设计思路。
3. 任务分析
30个人围成一圈,因而启发我们用一个循环的链来表示。可以使用结构数组来构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二为该人是否被扔下海的标记,为1表示还在船上。从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。这样循环计数直到有15个人被扔下海为止。



