您的位置:首页 > 其它

数组实现约瑟夫环

2016-05-11 22:18 211 查看
#include<iostream>
using namespace std;
void cover_num(int *arr, int pos, int n)//覆盖掉pos位置的数
{
for (int i = pos; i < n-1; i++)
{
arr[i] = arr[i + 1];
}
}
void out_circle(int *arr, int n)
{
int num = 1;
int index = 0;
while (n > 1)
{
int count = 2;//报三次数相当于跳两次
while (count--)
{
if (n == index){ index = 0; }//到达尾部时再回到0位置
index++;
if (n == index){ index = 0;}
}
cout <<"第"<<num<<"个出圈的数是:"<< arr[index] << endl;
cover_num(arr, index, n);
n--; num++;
}
}
void main()
{
int array[100];
for (int i = 0; i < 100; i++)
{
array[i] = i + 1;
}
cout << "\n共100人报数为三的人出圈\n";
out_circle(array, 100);
cout <<"\n最后留下的人是:" <<array[0] << endl;
system("pause");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息