什么是约瑟夫问题?
n个人围坐成一圈,从1开始顺序编号,游戏开始,从第一个人开始由1到m循环报数,报到m的人退出圈外(即死亡),问最后留下的那个人原来的序号
解题思路
1.根据游戏人数n建立一个动态数组(bool型),游戏开始时,所有人都是存活状态(true);
2.存活人依次报数,当报出的数字为m的倍数时,此人死亡(false),死亡人数+1(或存活人数-1);
3.当死亡人数为n-1(或存活人数为0)时,游戏结束;
4.报出唯一一个存活的人的序号(角标)。
include <iostream>
using namespace std;
int main()
{
int n, m;
cout << "Input n and m:";
cin >> n >> m;