码迷,mamicode.com
首页 > 其他好文 > 详细

收集雨水问题

时间:2016-04-30 19:41:23      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

直方图收集雨水问题:

给定n个非负整数,表示直方图的方柱的高度,同时,每个方柱的宽度假定都为1,若这样形状的容器收集雨水,可以盛多少雨水。

如:输入0,1,0,2,1,0,1,3,2,1,2,1;返回为6.

如图所示:

技术分享

程序实现:

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int TrappingRainWater(int A[],int n){
 5     int SecHight = 0;//当前找到的第二大数
 6     int left = 0;
 7     int right = n-1;
 8     int trap = 0;//依次遍历每个方柱能装水的容量
 9     while(left<right){
10         if(A[left]<A[right]){
11             SecHight = max(SecHight,A[left]);
12             trap += (SecHight-A[left]);
13             left++;
14         }
15         else{
16             SecHight = max(SecHight,A[right]);
17             trap +=(SecHight-A[right]);
18             right--;
19         }
20     }
21     return trap;
22 }
23 int main()
24 {
25     int A[] ={0,1,0,2,1,0,1,3,2,1,2,1};
26     cout<<TrappingRainWater(A,sizeof(A)/sizeof(int))<<endl;
27     return 0;
28 }

运行结果:

技术分享

转载请注明出处:

C++博客园:godfrey_88

http://www.cnblogs.com/gaobaoru-articles/

收集雨水问题

标签:

原文地址:http://www.cnblogs.com/gaobaoru-articles/p/5449160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!