Java 使用模获得给定元素输入数组中最大子数组的和

Java 使用模获得给定元素输入数组中最大子数组的和,java,arrays,data-structures,Java,Arrays,Data Structures,我正在尝试使用BruteForce技术以^2的复杂度解决子阵列问题。该代码适用于小数据集,但由于某些原因,它不适用于大数据集。我在逻辑上做错了什么。有人能帮我吗 问题说明:- 样本输入:- 1 50 1804289384 846930887 1681692778 1714636916 1957747794 424238336 719885387 1649760493 596516650 1189641422 1025202363 1350490028 783368691 1102520060 2

我正在尝试使用BruteForce技术以^2的复杂度解决子阵列问题。该代码适用于小数据集,但由于某些原因,它不适用于大数据集。我在逻辑上做错了什么。有人能帮我吗

问题说明:-

样本输入:-

1
50 1804289384
846930887 1681692778 1714636916 1957747794 424238336 719885387 1649760493 596516650 1189641422 1025202363 1350490028 783368691 1102520060 2044897764 1967513927 1365180541 1540383427 304089173 1303455737 35005212 521595369 294702568 1726956430 336465783 861021531 278722863 233665124 2145174068 468703136 1101513930 1801979803 1315634023 635723059 1369133070 1125898168 1059961394 2089018457 628175012 1656478043 1131176230 1653377374 859484422 1914544920 608413785 756898538 1734575199 1973594325 149798316 2038664371 1129566414
预期产出:-

1802192837
我得到的实际输出:-

1802467240
代码:-


我认为J循环是一个问题,你们用相同的元素填充整个子数组

 for ( int i=0;i<a.length;i++ ) {                                     
             for( int j=i;j<a.length;j++ ) {
                 val = val + **a[i]**;
                 if( val%m > sum )
                 sum = val%m;                 
             }                
            val = 0;
        }

Change 
val = val + a[i];
to 
val = val + a[J];

你们假设我们理解你们所说的最大子阵列之和的意思。请解释一下你要解决的问题。此外,您的程序如何生成答案并以异常终止?添加了屏幕截图以供解释。。抱歉,迟到了几秒钟……根据问题陈述,您的答案看起来都不正确。基于模7,最大可能的答案是6。另外,您还没有解释前两个输入行的用途。请退后一步,假设这里没有人在同一个课程中,或者没有人可以接触到任何材料,重新构造这个问题。好的,你有一个很小的打字错误。看看你们能不能找到。谢谢你们!!现在代码运行良好。但是我的代码对于大型数据集来说是超时的。。。我怎样才能优化这个逻辑,或者我应该完全使用不同的数据结构呢。。。你做对了。。。但是对于大数据集,我的代码超时了@什么是大数据集?您能更具体地说明数据使用和问题获取吗?
Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:907)
    at java.util.Scanner.next(Scanner.java:1530)
    at java.util.Scanner.nextInt(Scanner.java:2160)
    at java.util.Scanner.nextInt(Scanner.java:2119)
    at Solution.main(Solution.java:29)
 for ( int i=0;i<a.length;i++ ) {                                     
             for( int j=i;j<a.length;j++ ) {
                 val = val + **a[i]**;
                 if( val%m > sum )
                 sum = val%m;                 
             }                
            val = 0;
        }

Change 
val = val + a[i];
to 
val = val + a[J];