先介绍一下什么是约瑟夫环问题:就是N个人围成一圈,从开头(下标为0)报数,报到你设置的Number就要出局,几轮下来后剩下最后一个人输出这个人的序号!
这里只介绍两种比较浅显易懂自己编写的代码,另外还有链表和递归的方式可以自行百度。
ok,第一种我们用数组来写。
int main()
{
int total = 0;
cout << "total:" << endl;
cin >> total;
int number = 0;
cout << "number: " << endl;
cin >> number;
int *arr = new int[total];
for (int i = 1; i <= total; i++)
{
arr[i - 1] = i;
}
int n = total;
int shout = 1;
int i = 0;
while (total != 1)
{
if (arr[i] != -1)
{
i++;
shout++;
}
else
{
i++;
}
if (i == 10)
{
i = 0;
}
if (shout == number && arr[i] != -1)
{
cout << arr[i] << "出局" << endl;
arr[i] &#