【发布时间】:2019-08-21 14:08:55
【问题描述】:
当我尝试在 Dev-C++ 中运行此代码时。没有输出。但是当我在任何在线编译器中运行它时,代码运行流畅。为什么它不在 Dev-C++ 中运行?
我尝试在各种在线编译器中运行它,它运行平稳。
int main()
{
int T;
cin>>T;
while(T--)
{
long long int N, K;
cin>>N>>K;
long long int arr[N];
for(long long i=0; i<N; i++)
{
cin>>arr[i];
}
long long int max = INT_MIN;
long long int dp[N];
for(int i=N-1; i>=0; i--)
{
if((i+K)>=N)
{
dp[i] = arr[i];
}
else
{
dp[i] = (dp[i+K]+ arr[i]);
}
}
for(int k=0; k<N; k++)
{
if (dp[k]>max)
{
max = dp[k];
}
}
cout<<max<<endl;
}
getchar();
return 0;
}
【问题讨论】:
-
long long int arr[N];在标准c++中是不合法的,这实际上可能是它不起作用的原因。请记住,堆栈在 Windows 上通常限制为 1 MB。但是 linux 上的默认堆栈是 10 MB。 -
long long int arr[N];-- 这不是有效的 C++。 C++ 中的数组必须具有由编译时表达式确定的条目数,而不是变量。请改用std::vector<long long> arr(N);。 -
但是当我在任何在线编译器中运行它时 -- Not this one,原因在之前的 cmets 中已经指出。
-
"Dev-C++" 这个名字我好久没听过了...我建议使用更新、更好的 IDE。 Bloodshed Dev-C++ 14 年没更新了,就连 Orwell Dev-C++ 也有 2 年多没更新了。