Код не дает мне никакого вывода в Dev-C ++ - PullRequest
1 голос
/ 31 марта 2019

Когда я пытаюсь запустить этот код в 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;
}

Ответы [ 2 ]

3 голосов
/ 31 марта 2019

Давайте посмотрим на эту строку кода:

long long int arr[N]; 

Поскольку N не является константой времени компиляции, вы пытаетесь создать так называемый массив переменной длины.Массивы переменной длины допустимы в более новых версиях C, но не в C ++.Он компилируется в GCC как нестандартное расширение, поэтому, вероятно, оно скомпилировано на онлайн-компиляторе.

Мы можем делать то, что вы хотите, просто используя вектор (из #include <vector>)

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

Вы можете использовать вектор точно так же, как и массив.

0 голосов
/ 31 марта 2019

МОЖЕТ быть из-за 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;
}
...