[英]Segmentation Fault in a simple program
我必须向提供反馈的判断系统提交一些 C++ 代码。
但是,我遇到了“硬测试用例”的段错误。
如果有人可以快速查看我的代码来帮助我,那就太好了。
(第一个输入将始终是正整数)
#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;
}
我没有看到任何可能性指数会去超出范围,从而极有可能“疑难案件”有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
如果我给输入t= 2
,您使用std::cin
读取的值将是table[2][2]
,这是无效索引,因此会引发分段错误。 在t=2
情况下,最大索引将是table[1][1]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.