猴子选大王cpp代码
时间: 2024-11-24 12:27:18 浏览: 14
猴子选大王是一种经典的计算机算法问题,也称为“二分查找法”或“最小生成树”的简化版。在一个由n只猴子代表的数组里,每只猴子有一个值,你需要找到使得所有猴子都不如它大的那个猴子,即“最大者”。这里是一个简单的C++代码实现,假设数组已经排序:
```cpp
#include <iostream>
using namespace std;
int monkeyKing(vector<int>& monkeys) {
if (monkeys.empty()) return -1; // 如果数组为空,返回-1表示无解
int left = 0;
int right = monkeys.size() - left) / 2;
if (monkeys[mid] >= monkeys[mid + 1]) { // 如果中间猴子大于等于右边猴子,则最大者在右半部分
left = mid + 1;
} else { // 否则,最大者在左半部分
right = mid - 1;
}
}
return monkeys[left]; // 返回最大者的位置,注意索引是从0开始的
}
int main() {
vector<int> monkeys = {4, 6, 7, 8, 9};
cout << "Monkey King: " << monkeyKing(monkeys) << endl;
return 0;
}
```
在这个代码中,`monkeyKing`函数通过不断将搜索范围缩小一半,最终找到满足条件的最大猴子。在main函数中,我们创建了一个示例数组并调用了这个函数。
阅读全文