【算法与数据结构】最大子序列和问题
生活随笔
收集整理的這篇文章主要介紹了
【算法与数据结构】最大子序列和问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(轉載請注明出處:http://blog.csdn.net/buptgshengod)
1.題目
? ? ?給定一個數字序列,其中有正有負,確定最大子序列和。用窮舉法最好的結果也是時間復雜度O(n2)。后來看到一個聰明的方法,直接使時間復雜度變為O(n)。
2.解法
(1)窮舉法
? ? ? ?把所有序列都算出來找到最大的。 /*最大序列和問題的求解,一組數列有正有負,找出其中加起來最大的連續序列。以如下序列為例-2,11,-4,13,-5,-2算法一:窮舉法*/public class Test {public static void main(String[] args){int[] list={-2,11,-4,13,-5,-2};int i,j;int maxsum=0;int sum=0;for(j=0;j<list.length;j++){sum=0;for(i=j;i<list.length;i++){sum+=list[i];if(sum>maxsum){maxsum=sum;}}}System.out.print(maxsum);} }(2)聯機算法
? ? ?聯機算法是對讀入的數據給出正確答案,每次都判斷。 ? ? ?因為最大子序列不可能以一個負數作為起始。同理也不可能以一個負序列做起始。 public class test {public static void main(String []args){int[] list={-2,11,-4,13,-5,-2};int i,j;int maxsum=0;int sum=0;for(i=0;i<list.length;i++){sum+=list[i];if(sum>maxsum){maxsum=sum;}else{if(sum<0)sum=0;}}System.out.print(maxsum);} }總結
以上是生活随笔為你收集整理的【算法与数据结构】最大子序列和问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法与数据结构】关于代码运行时间复杂度
- 下一篇: 【算法与数据结构】一道检测inversi