数组蓄水池

#include <iostream>
#include <vector>

using namespace std;

int vol(vector<int> vec){
	int max = vec[0];
	int max_pos = 0;
	for(int i = 0; i < vec.size(); i++){
		if(vec[i] > max){
			max = vec[i];
			max_pos = i;
		}
	}
	int max_left = vec[0];
	int max_right = vec[vec.size() - 1];
	int volume = 0;

	for(int i = 0; i < max_pos; ++i){
		if(vec[i] > max_left)
			max_left = vec[i];
		else
			volume += max_left - vec[i];
	}

	for(int i = vec.size() - 1; i > max_pos; --i){
		if(vec[i] > max_right)
			max_right = vec[i];
		else
			volume += max_right - vec[i];
	}

	return volume;
}

int main()
{
	vector<int> vec{2, 5, 1, 2, 3, 4, 7, 7, 6};

	cout<<vol(vec);//输出10
}

猜你喜欢

转载自blog.csdn.net/weixin_40804971/article/details/82793495
今日推荐