代码思路
注释部分为优化过程。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
unsigned int N;
//cout << "请输入一个数:" << endl;
cin >> N;
vector<int> nums(N, 1);//定义一个含N个整数的数组且均为1,注意是从0开始计数
unsigned int n = N;//用来记录还有多少只猴子
int cnt = 0;//cnt要写在外面,保证每次循环开始不被初始化
while (n != 1)
{
//用来控制循环跳出和记录猴子个数
/*for (auto a : nums) {
if (a == 0) {
--n;
}
if(n == 1) {
break;
}
}*/
//用来排除猴子
for (int i = 0; i < nums.size(); ++i) {
if (nums[i] != 0) {
++cnt;
if (cnt == 3) {
cnt = 0;
nums[i] = 0;
--n;
}
}
}
}
for (int c = 0; c < nums.size();++c) {
if (nums[c] == 1) {
cout << c + 1 << endl;
break;
}
}
return 0;
}