C++line.exe已停止工作

C++ line.exe has stopped working

本文关键字:停止工作 exe C++line      更新时间:2023-10-16

我用C++编写了一些程序,它在矩阵中找到最长的水平行0s。在第一行中,我输入n和m(矩阵数组a中的行和列),然后输入数组。主要问题是,当我插入第一行(全部正确)时,程序停止,出现错误1073741510,line.exe已停止工作。

#include <iostream>
using namespace std;
int main()
{
    int n, m;
    cin >> n, m;
    int a[n][m];
    int i,j,k;
    for (i=0;i<n;i=i+1){
        for(j=0;j<m;j=j+1){
            int temp;
            cin >> temp;
            a[i][j] = temp;
        }
    }
    int max;
    for (i=0;i<n;i++){
        for(j=0;j<m;j++){
            if(a[i][j]==0){
                for(k=j+1;k<m;k++){
                    if(a[i][k]==0){
                        max++;
                    }else{break;}
                }
            }
        }
    }
    cout << max;
    return 0;
}

很抱歉出现了大量的for循环,我不知道解决问题的更好方法。

要同时读取数字nm,请使用:

cin >> n >> m;

否则,由于您有cin >> n, m;,它与等效

cin >> n;
m; // This has no effect

要获得正确操作算法的解决方案,请尝试以下操作:

int maxZeros = 0;
int lineContainingMaxZeros = 0;
for (i = 0; i < n; i++) {
    int countZero = 0;
    for (j = 0; j < m; j++) {
        if (a[i][j] == 0)
            countZero++;
    }
    if (countZero > maxZeros) {
        maxZeros = countZero;
        lineContainingMaxZeros = i;
    }
}
cout << "Line: " << lineContainingMaxZeros << " containing " << maxZeros << " zeros";