当我尝试在 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];
因为N
不是编译时常量,您正在尝试创建所谓的可变长度数组。变长数组在较新版本的 C 中有效,但在 C++ 中无效。它确实在GCC下作为非标准扩展进行编译,这可能就是它在在线编译器上编译的原因。
我们只需使用 vector 即可完成您想要的操作(来自 #include <vector>
)
std::vector<long long int> arr(N); //Create a vector of size N
您可以按照与使用数组完全相同的方式使用 vector 。
关于c++ - 该代码在 Dev-C++ 中没有给我任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55437672/