凹凸不平的地面每當下雨的時候總會積水。假設地面是一維的,每一塊寬度都為1,高度是非負整數,那麼可以用一個數組來表達一塊地面。例如[0,1,0,2,1,0,1,3,2,1,2,1]可以用來表示下圖地面:
當下過雨後,地面就會積水,上圖中藍色的區域就是積水區域。現在給你一個數組表示地面,求下過雨後這塊地面有多少積水量(假設不蒸發、不滲透)。
輸入第一行是一個整數m,表示有m組試樣例,不超過100。樣例輸出:
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++) z="b;z">=0;z--) { if(a[z]>a[j]) { for(c=j+1;c<n;c++)>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++)></n;j++)></endl;></endl;></endl;></iostream>