zoukankan      html  css  js  c++  java
  • 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:
    		cout<<"请输入数组长度n(n<=20000)"<<endl;
    		cin>>n;
    		if(n>20000||n<0)
    		{
    			cout<<"输入错误,请又一次输入"<<endl;
    			goto e;
    		}
    
    		for(j=0;j<n;j++)
    
    		{
    			cin>>a[j];
    		}
    		b=0;
    		j=0;
    w:
    		b=j;
    		for(j=b+1;j<n;j++)
    		{
    			for(z=b;z>=0;z--)
    			{
    				if(a[z]>a[j])
    				{
    					for(c=j+1;c<n;c++)
    					{
    						if(a[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 0;
    }


    推荐文章:那些年。做的几个应用


  • 相关阅读:
    GJM : Unity的profiler性能分析【转载】
    GJM :Unity UI 之 UGUI 开发
    GJM:笔记记录
    GJM : UGUI 缩放循环拖动展示卡牌效果
    GJM :HTC Vive VRTK.Package 踩坑之路(一)
    GJM :Mono 介绍
    GJM :Unity3D 介绍
    GJM : C# 介绍
    GJM : 通用类型系统(Common Type System CTS)
    GJM :SQL Server中常用的SQL语句
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7291633.html
Copyright © 2011-2022 走看看