首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中用Kadane算法实现子阵的最大和

在Java中用Kadane算法实现子阵的最大和
EN

Stack Overflow用户
提问于 2019-05-28 20:12:21
回答 1查看 204关注 0票数 0

这是极客为极客准备的问题陈述(链接:https://practice.geeksforgeeks.org/problems/kadanes-algorithm/0 )

我的代码按照编译和测试选项运行得很好。但是当我尝试提交时,它抛出了关于多个测试用例失败的错误。

有人能帮我这个忙吗?

代码:

代码语言:javascript
复制
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

我的输出:输入测试用例数

输入数组大小:输入以空格分隔的数组元素Kadane Sum =6

输入数组大小:输入以空格分隔的数组元素Kadane Sum =9

输入数组大小:输入以空格分隔的数组元素Kadane Sum = 62

输入数组大小:输入以空格分隔的数组元素Kadane Sum = 20

输入数组大小:输入以空格分隔的数组元素Kadane Sum = 28

提交代码时收到以下错误消息:

回答错误。!错误答案可能是您的代码无法正确处理多个测试用例(TC)。代码失败的第一个测试用例:

输入:(根据网站)3 1 2 3

它的正确输出是:6

我已经在我的输入测试用例(测试用例1)中使用了相同的输入,并且输出与预期相同。

有人能帮我用StringBuffer优化代码吗?

EN

回答 1

Stack Overflow用户

发布于 2019-05-28 20:25:44

输出应为和:

代码语言:javascript
复制
System.out.println(kadanesum);

而不是你写的信息:

代码语言:javascript
复制
System.out.println("\tKadane Sum = " + kadanesum);

正如Rahul指出的,您还需要删除其他消息,例如:

代码语言:javascript
复制
System.out.println("Enter the array elements separated by space");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56342017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档