接雨水cpp代码
时间: 2023-07-02 08:18:10 浏览: 80
以下是一个简单的 C++ 程序,用于计算接雨水的容量:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int trap(vector<int>& height) {
int n = height.size();
int left = 0, right = n - 1;
int leftMax = 0, rightMax = 0;
int res = 0;
while (left <= right) {
if (height[left] <= height[right]) {
if (height[left] >= leftMax) {
leftMax = height[left];
} else {
res += leftMax - height[left];
}
left++;
} else {
if (height[right] >= rightMax) {
rightMax = height[right];
} else {
res += rightMax - height[right];
}
right--;
}
}
return res;
}
int main() {
vector<int> height = {0,1,0,2,1,0,1,3,2,1,2,1};
int capacity = trap(height);
cout << "The capacity of the water trapped is: " << capacity << endl;
return 0;
}
```
该程序使用双指针方法,从两端开始向中间移动,同时维护左右两侧的最大高度。如果当前位置的高度小于左右两侧的最大高度,则该位置可以存储一定的雨水,将其累加到结果中。
阅读全文