酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

给定 n n 个数 a 1 , a 2 , … , a n a 1 ​ ,a 2 ​ ,…,a n ​ ,这些数围成一个环,两个数能看到当且仅当两条路径中一条满足所有数都小于等于这两个数。 请问有多少对数能互相看见。 c++

以下是一个使用 C++ 解决此问题的示例代码: ```cpp #include <iostream> #include <vector> int countVisiblePairs(std::vector<int> numbers) { int count = 0; int n = numbers.size(); for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { bool canSee = true; for (int k = i + 1; k < j; ++k) { if (numbers[k] > numbers[i] && numbers[k] > numbers[j]) { canSee = false; break; } } if (canSee) { count++; } } } return count; } int main() { std::vector<int> numbers = {1, 3, 2, 4, 5}; int result = countVisiblePairs(numbers); std::cout << "能互相看见的对数为: " << result << std::endl; return 0; } ``` 额外需要注意的逻辑点: 1. 对于循环边界的处理要仔细,确保不会出现越界错误。 2. 注意在判断能否看见时的逻辑,保证准确性。 3. 对于输入的数字序列,要考虑异常情况,比如空序列或者全是相同数字的情况。 [2025-04-12 23:26:39 | AI写代码神器 | 328点数解答]

相关提问