代码在 Dev-C++ 中没有给我任何输出
The code doesn't gives me any output in Dev-C++
当我尝试在 Dev-C++ 中 运行 这段代码时。没有输出。但是当我 运行 它在任何在线编译器中时,代码 运行 很顺利。为什么它在 Dev-C++ 中不是 运行ning?
我已经在各种在线编译器中尝试 运行ning 它,运行ning 很顺利。
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];
它在 DEV C++ 中是不可接受的
使用 std::vector<long long> arr(N);
代替它。
在 DEV C++ 5.11 版本中它很容易给出输出
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
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 下编译为非标准扩展,这可能是它在在线编译器上编译的原因。
我们可以通过使用向量(来自#include <vector>
)来做你想做的事
std::vector<long long int> arr(N); //Create a vector of size N
您可以像使用数组一样使用向量。
当我尝试在 Dev-C++ 中 运行 这段代码时。没有输出。但是当我 运行 它在任何在线编译器中时,代码 运行 很顺利。为什么它在 Dev-C++ 中不是 运行ning?
我已经在各种在线编译器中尝试 运行ning 它,运行ning 很顺利。
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];
它在 DEV C++ 中是不可接受的
使用 std::vector<long long> arr(N);
代替它。
在 DEV C++ 5.11 版本中它很容易给出输出
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
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 下编译为非标准扩展,这可能是它在在线编译器上编译的原因。
我们可以通过使用向量(来自#include <vector>
)来做你想做的事
std::vector<long long int> arr(N); //Create a vector of size N
您可以像使用数组一样使用向量。