有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。

// ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<vector>
#include<iostream>
using namespace std;

class MaxInnerRec {
public:
	int countArea(vector<int> A, int n) {
		vector<int> areas;
		for (int i = 0; i < A.size(); i++)
		{
			int sum = A[i];
			for (int before = i-1; before >= 0; before--)
			{
				if (A[before] < A[i]) {
					break;
				}
				else {
					sum = sum + A[i];
				}
			}

			for (int afer = i + 1; afer < A.size(); afer++)
			{
				if (A[afer] < A[i]) {
					break;
				}
				else {
					sum = sum + A[i];
				}
			}
			areas.push_back(sum);
		}
	
		int maxArea= areas[0];
		for (int i = 1; i < areas.size(); i++)
		{
			if (maxArea < areas[i])
			{
				maxArea = areas[i];
			}
		}
		return maxArea;
	}
};

int main()
{
	vector<int> A = { 2,7,9,4,1 };
	MaxInnerRec maxInnerRec;
	cout << maxInnerRec.countArea(A,5)<<endl;
return 0;
}
posted @ 2017-03-06 10:20  wdan2016  阅读(1122)  评论(0编辑  收藏  举报