简单程序中的分段错误

时间:2015-09-18 18:40:52

标签: c++ segmentation-fault dynamic-programming

我必须向提供反馈的评判系统提交一些c ++代码。

然而,我正在为“硬测试用例”获得段错误。

如果有人可以快速查看我的代码来帮助我,那将是非常好的。

(第一个输入将始终为正int)

#include <iostream>
using namespace std;

int main()
{
    long long t;
    cin >> t;
    bool table[t][t];
    long long n = t;
    int sum = 0;
    long long s;
    while(t--)
    {
        cin >> table[t][t];
        if (!table[t][t])
        {
            sum++;
        }
    }
    for(t=0;t<n;t++)
    {
        for(s=t+1;s<n;s++)
        {
            table[t][s] = 
                    (table[t][s-1] && !table[s][s]) ||
                    (!table[t][s-1] && table[s][s]);
            if(!table[t][s])
            {
                    sum++;
            }
        }
    }
    cout << sum << endl;
    return 0;
}

1 个答案:

答案 0 :(得分:1)

我没有看到任何可能性指数会超出范围,所以很可能&#34;困难情况&#34;让t大到足以溢出堆栈,因为你使用非标准的C ++动态数组。使用std::vector

在堆上为您的阵列分配数据
vector<vector<bool>> table{ t, vector<bool>{ t } };

vector<vector<bool>> table( t, vector<bool>( t ) ); // if you do not have C++11 yet