直方图如果条件错误C ++

时间:2016-12-01 10:17:34

标签: c++ histogram

#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,因为当我删除条件时程序运行正常。我真的无法理解我做错了什么。帮助将不胜感激!

0 个答案:

没有答案