#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream in;
ofstream out;
int col, row;
in.open("intrare.txt");
in >> col >> row;
int v[col][row];
for (int y=0;y<col;y++) {
for (int x=0;x<row;x++) {
in >> v[y][x];
}
}
in.close();
int val[row];
for (int j=0;j<row;j++)
val[j]=0;
int area=0, marea=0;
vector<int> _stack;
for (int i=0;i<col;i++) {
for (int k=0;k<row;k++) {
if (v[i][k]==0)
val[k]++;
else
val[k]=0;
}
for (int j=0;j<row-1;j++)
if (val[j]<=val[j+1] && val[j]!=0)
_stack.push_back(j);
}
out.open("iesire.txt");
out << marea;
out.close();
return 0;
}
这将从二维数组中获取值,并在直方图中将其转换为某些索引处的数字在我的情况下是0或1.我想要做的是计算直方图中的最大区域矩形,使用堆栈方法(I&#39; m使用向量而不是堆栈)。如果某些条件为真,则第二个嵌套for
循环会推回索引。我的问题是,由于一些奇怪的原因,该程序在编译时不会响应和退出。问题是val[j]!=0
,因为当我删除条件时程序运行正常。我真的无法理解我做错了什么。帮助将不胜感激!