c++ - 该代码在 Dev-C++ 中没有给我任何输出

标签 c++ arrays dev-c++

当我尝试在 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/

相关文章:

c++ - 将文件转换为二进制 c++ studio 2012 的问题

c++ - 如何使用 MPI 收集行和列分区矩阵?

Javascript - 排序数组时忽略引号

compiler-errors - 关于书中示例的错误

c++ - Dev-C++ IDE 中的自动格式化功能

c++ - 重载函数不编译的简单 SFINAE 示例

c++ - 我可以用 std::chrono::high_resolution_clock 替换 SDL_GetTicks 吗?

c++ - 如何清除控制台

c - 在c中打印多维数组

arrays - ruby 中 boolean 数组的最终逻辑值