程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> OpenJudge百煉習題解答(C++)--題4074:積水量

OpenJudge百煉習題解答(C++)--題4074:積水量

編輯:C++入門知識

OpenJudge百煉習題解答(C++)--題4074:積水量


題:

總時間限制: 1000ms 內存限制:65536kB
描述

凹凸不平的地面每當下雨的時候總會積水。假設地面是一維的,每一塊寬度都為1,高度是非負整數,那麼可以用一個數組來表達一塊地面。例如[0,1,0,2,1,0,1,3,2,1,2,1]可以用來表示下圖地面:

\

當下過雨後,地面就會積水,上圖中藍色的區域就是積水區域。現在給你一個數組表示地面,求下過雨後這塊地面有多少積水量(假設不蒸發、不滲透)。

輸入第一行是一個整數m,表示有m組試樣例,不超過100。
接下來m塊,每塊第一行是一個正整數n,表示地面總寬度(數組長度),不超過20000。
接下來一行是n個整數,用空格隔開,表示地面高度。輸出對於每組輸入,輸出一個整數表示積水量。樣例輸入:

				\ 樣例輸出:
				
6
2

解:

#include<iostream>
using namespace std;
int main()
{
	int m,n,i,j,c,b,z,l,x=0;
	int a[20000];
h:
	cout<<"請輸入樣式組數m(m<=100)"<<endl; cin="">>m;
	if(m<0||m>100)
	{
		cout<<"輸入錯誤,請重新輸入"<<endl; goto="" h;="" }="" for(i="0;i<m;i++) e:=" "="" cin="">>n;
		if(n>20000||n<0)
		{
			cout<<"輸入錯誤,請重新輸入"<<endl; goto="" j="0;j<n;j++)" cin="">>a[j];
		}
		b=0;
		j=0;
w:
		b=j;
		for(j=b+1;j<n;j&#43;&#43;) z="b;z">=0;z--)
			{
				if(a[z]>a[j])
				{
					for(c=j+1;c<n;c&#43;&#43;)>a[j])
						{
							if(a[c]>a[z])
							{
								l=a[z];
							}
							else
							{
								l=a[c];
							}
							x=x+(l-a[j]);

							goto w;
						}
					}
				}
			}
		}
	cout<<"積水量為"<<x<<endl; return="" pre=""><p>
</p>
   
</x<<endl;></n;c&#43;&#43;)></n;j&#43;&#43;)></endl;></endl;></endl;></iostream>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved