昨天写了一下求最大子矩阵的题
一直看不出算法有什么错误
经过打印调试,最后发现居然是sizeof引起的一个错误,本来传参数是数组,最后改成了用vector<int> ,下面计算数组大小的代码一直没改。sizeof(arr)=16;导致了我除了四列之外矩阵的错误 ;
引以为戒,突然才注意到,容器是一个类,用sizeof()求大小必然只是一个固定值。
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
int help_maxSize(vector<int> arr)
{
// int n=sizeof(arr)/4;
int n = arr.size();
stack<int> sta;//维护一个递增的栈
int max_area=0;
vector<vector<int>> minb(n,vector<int>(2));
for(int i=0;i<n;i++)
{
//如果遇到重复元素,栈中有一个即可,因为面积相等
while(!sta.empty()&&arr[sta.top()]>=arr[i])
{
int peekindex = sta.top();
sta.pop();
// int peekindex = sta.top();
//不用浪费内存来保存边界,当下求其矩阵边长就行了
//minb[peekindex][1] = i;
//minb[p