Максимальная сумма подмассива с использованием алгоритма Кадане в Java - PullRequest
0 голосов
/ 28 мая 2019

Это постановка проблемы от гиков для гиков (ссылка: https://practice.geeksforgeeks.org/problems/kadanes-algorithm/0)

Мой код работает нормально в соответствии с опцией Compile & test. Но когда я пытаюсь отправить, выдает ошибку об ошибке для нескольких тестовых случаев.

Может ли кто-нибудь помочь мне с этим?

КОД:

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;


public class Kadane

{
public static void main(String[]args) throws IOException,NumberFormatException

{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Enter the number of test cases");
    int T = Integer.parseInt(br.readLine());

    for(int t=0 ; t<T ; t++)
    {
        int N,a=0;
        int sum1=0,maxsum=-2147483648,kadanesum=-2147483648;

        System.out.println("Enter the size of array : ");
        N =  Integer.parseInt(br.readLine());
        int arr[] = new int[N];

        System.out.println("Enter the array elements separated by space");
        String S = new String(br.readLine());
        String elem[] = S.split(" ");

        for(String e:elem)
        {
            arr[a] = Integer.parseInt(e);
            a++;
        }

        for(int i=0 ; i<N ; i++)
        {
            for(int j=i ; j<N ; j++)
            {
                sum1 = sum1 + arr[j];
                if(maxsum<sum1)
                {
                    maxsum=sum1;

                }
            }
            if(maxsum>kadanesum)
            {
                kadanesum=maxsum;
            }
            sum1=0;
            maxsum=-2147483648;
        }

        System.out.println("\tKadane Sum = " + kadanesum);

    }           
}
}

Мой код ссылки: https://ide.geeksforgeeks.org/tXNHh28A0D

Мой вклад: 5 (количество тестов)

3 (размер массива)

1 2 3 (элементы массива)

5

1 2 3 -2 5

10

2 9 3 -10 -20 34 28 -50 30 -1

7

4 5 -10 -50 3 9 8

8

8 9 8 -25 25 1 2

Мой вывод: Введите количество тестов

Введите размер массива: Введите элементы массива через пробел Кадане Сум = 6

Введите размер массива: Введите элементы массива через пробел Кадане Сум = 9

Введите размер массива: Введите элементы массива через пробел Кадане Сум = 62

Введите размер массива: Введите элементы массива через пробел Кадане Сум = 20

Введите размер массива: Введите элементы массива через пробел Кадане Сум = 28

При отправке моего кода я получаю следующее сообщение об ошибке:

Неправильный ответ. !!!Неправильный ответ Возможно, ваш код не работает правильно для нескольких тестовых случаев (TC). Первый тестовый случай, когда ваш код не удался:

Ввод: (согласно веб-сайту) 3 1 2 3

Правильный вывод: 6

Я использовал этот же вход в моих входных тестовых примерах (контрольный пример 1), и результат такой же, как и ожидалось.

Может ли кто-нибудь помочь мне оптимизировать код с помощью StringBuffer?

1 Ответ

0 голосов
/ 28 мая 2019

На выходе должна быть сумма:

System.out.println(kadanesum);

А не сообщение, которое вы написали:

System.out.println("\tKadane Sum = " + kadanesum);

И, как отметил Рахул, вам также необходимо удалить другие сообщения, такие каккак:

System.out.println("Enter the array elements separated by space");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...