【发布时间】:2015-09-18 18:40:52
【问题描述】:
我必须向提供反馈的裁判系统提交一些 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;
}
【问题讨论】:
-
bool table[t][t];不是有效的 C++,因为t的值在编译时是未知的。您的编译器没有将其报告为错误吗? -
启动调试器并检查实际出了什么问题,应该比在这里询问更好的线索!
-
no. should i rather use malloc如果您使用 c 编程,是的,如果您使用的是 c++,则不是。 c++ 的答案是使用 std::vector。 -
long long t;我怀疑允许值比你的堆栈大得多。 -
it also segfault's when i'm using int..那还是太大了。请记住堆栈大小为几 MB。不是 GB。
标签: c++ segmentation-fault dynamic-programming