• 最大的矩形(测试全对,为什么只有20分??)


    问题描述

    在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。

    请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是10。

    输入格式

    第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。

    第二行包含n 个整数h1, h2, … , hn,相邻的数之间由空格分隔。(1 ≤ hi ≤ 10000)。hi是第i个矩形的高度。

    输出格式
    输出一行,包含一个整数,即给定直方图内的最大矩形的面积。
    样例输入

    6

    3 1 6 5 2 3

    样例输出
    10  
     
    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    int main()
    {
    	int n,sum=0;
    	cin>>n;
    	vector<int>a;
    	for(int i=0;i<n;i++)
    	{
    		int x;
    		cin>>x;
    		a.push_back(x);
    	}
    
    	for(int j=2;j<=n;j++)
    		for(int k=0;k<n-(j-1);k++)
    		{
    			vector<int> b;
    			int h=0,m=k;
    			while(h<j)
    			{
    				b.push_back(a[m]);
    				h++;
    				m++;
    			}
    
     			int min0=*min_element(b.begin(),b.end());     
    			int sum0=min0*j;
    			if(sum0>sum)
    				sum=sum0;
    		}
    
    		cout<<sum<<endl;
    
    		return 0;
    }
    

      

  • 相关阅读:
    jenkins 持续集成iOS开发
    CocoaPods 简介
    iOS 10 Programming Fundamentals with Swift 学习笔记 0
    人生,从来没有白走的路
    Oracle数据库备份与恢复命令
    远程备份数据库文件
    恢复误删数据库数据
    Oracle同义词创建及其作用
    同义词使用案例
    ORA-01940无法删除当前已连接用户
  • 原文地址:https://www.cnblogs.com/xiaovlxx/p/4681462.html
Copyright © 2020-2023  润新知