最新消息:

约瑟夫问题

C++ 少儿编程 1441浏览 0评论

1

问题描述

      n个人(n<=100)围成一圈,从第一个人开始报数,数到m的人出列,再由下一个人重新从1开始报数,数到m的人再出圈,……依次类推,直到所有的人都出圈,请输出依次出圈人的编号。

输入格式:

n和m两个整数,中间用空格隔开。m,n<=100。

输出格式:

出圈的编号。

输入样例:

10 3

输出样例:

3 6 9 2 7 1 8 5 10 4

2

问题分析

       这是典型的约瑟夫问题,我们这里用模拟的方法。利用循环一个一个数,定义一个计数变量count,表示记录从1开始数的人数;定义一个下标索引变量i,表示数的人所在的位置下标。另外还要定义个记录出去人数的变量t。循环的条件是t<=n。我们用数组对应的值表示该下标的人是否出去了。0表示存在,1表示出去。如果数到最后一个记得还要从第一个开始。

3

参考代码如下

约瑟夫问题

转自公众号:
信息学少儿编程

您必须 登录 才能发表评论!