【问题标题】:The code doesn't gives me any output in Dev-C++该代码在 Dev-C++ 中没有给我任何输出
【发布时间】: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&lt;long long&gt; arr(N);
  • 但是当我在任何在线编译器中运行它时 -- Not this one,原因在之前的 cmets 中已经指出。
  • "Dev-C++" 这个名字我好久没听过了...我建议使用更新、更好的 IDE。 Bloodshed Dev-C++ 14 年没更新了,就连 Orwell Dev-C++ 也有 2 年多没更新了。

标签: c++ arrays dev-c++


【解决方案1】:

我们来看看这行代码:

long long int arr[N]; 

因为N 不是编译时常量,所以您正在尝试创建所谓的可变长度数组。可变长度数组在较新版本的 C 中有效,但在 C++ 中无效。它确实在 GCC 下作为非标准扩展编译,这可能是它在在线编译器上编译的原因。

我们可以通过使用向量来做你想做的事(来自#include &lt;vector&gt;

std::vector<long long int> arr(N); //Create a vector of size N 

您可以像使用数组一样使用向量。

【讨论】:

【解决方案2】:

可能是由于 long long int arr[N]; 在 DEV C++ 中不可接受 使用std::vector&lt;long long&gt; 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;
}

【讨论】:

    猜你喜欢
    • 2017-08-05
    • 1970-01-01
    • 2021-11-07
    • 2021-09-16
    • 1970-01-01
    • 2017-05-19
    • 2022-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多