C语言进阶:[13]约瑟夫斯问题的实现
约瑟夫斯问题是一些人排成一圈,并且每个人都有编号,按照给定的某一个数量M,从索引1开始数到M,当前的人出局,然后从出局的人后面的人重新计算在数到M,当前的人出局,一直到剩下一个人为止。如下图所示:
![C语言进阶:[13]约瑟夫斯问题的实现](https://exp-picture.cdn.bcebos.com/732a12e265e7340f7a50d69035b9763e20c2b4bf.jpg)
图是我自己手工画的,不好看,见谅。假设M=3,从1开始,索引3的出局,再计算,索引6的出局,我们要求出出局的次序和最后的那个人的索引。
![C语言进阶:[13]约瑟夫斯问题的实现](https://exp-picture.cdn.bcebos.com/cfa9ae04541bd10fdf0ecf29ba0e1799e82aa7bf.jpg)
![C语言进阶:[13]约瑟夫斯问题的实现](https://exp-picture.cdn.bcebos.com/07c98f2ca5cadce8af60c24ffcf7980e5e2095bf.jpg)
代码中主要是变量i的循环,要考虑越界的问题,利用模的运算就很好的处理了。当11个人,3个一计算,打印过程和最后结果如下:
![C语言进阶:[13]约瑟夫斯问题的实现](https://exp-picture.cdn.bcebos.com/d400248ca608a50fc1d4923f10cec7f88b77ffbf.jpg)
约瑟夫斯问题很有趣,对思维和代码的训练很有帮助。
(共篇)上一篇:整数转换为字符串|下一篇:声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:101
阅读量:46
阅读量:24
阅读量:163
阅读量:163