團隊成員:遲真真 馮小蘭
求乙個整型陣列的最大子陣列的和
看到這個題目,是這樣想的:
子陣列的元素個數為1個,2個,3個、、、、、n個
#include#define m 100後來又想了一種這樣的方法,如下:void
main()
}while(n>0) //
比較相鄰2,3。。n個相鄰元素時的最大值
if(m>max)
}n--;
}printf(
"最大為:%d
",max);
}
a[0]
a[0]+a[1]
a[0]+a[1]+a[2]
a[0]+a[1]+a[2]+……a[n-1]
a[1]
a[1]+a[2]
a[1]+a[2]+a[3]
a[1]+ a[2]+a[3]+……..a[n-1]
a[2]
a[2]+a[3]
a[2]+a[3]+a[4]
a[2]+a[3]+a[4]+……a[n-1]
以此類推:
a[i]
a[i]+a[i+1]
a[i]+a[i+1]………a[n-i]
因此可以找到規律,然後用3個for迴圈語句。
#includevoid但是考慮到時間空間複雜度,這種方法貌似不太好main()
if(m>max)}}
printf(
"最大子陣列的和為:%d\n
",max);
}
可以先比較出和的最大值,把這些和的最大值放在乙個陣列中,然後再求這個陣列的最大值。
執行結果:
下面是分析的過程草稿:
歡迎指正!
返回乙個整型陣列中最大子陣列的和
1.題目 返回乙個整數陣列中最大子陣列的和。要求 輸入乙個整形陣列,陣列裡有正數也有負數。陣列中連續的乙個或多個整數組成乙個子陣列,每個子陣列都有乙個和。求所有子陣列的和的最大值。要求時間複雜度為o n 2.設計思想 本題目最大的難點是如何找出子陣列並且時間複雜度為o n 我的思路是 從總左邊 a ...
題目1 給乙個整型陣列,求最大子串行和
馬上要開始找工作了,做些題目練練手。源 在vc6下通過編譯,正確執行 的理解更加清晰了,在此向作者表示感謝。最大子段和問題的動態規劃求解 1.基本原理 設陣列為a k 1 k n,最大子段和x 被定義為 jx max 1 i j n k i 不妨設 j b j max 1 j n k m 其中m 是...
演算法 求乙個陣列的最大子陣列
思路 1 全負數 取最大的數即可 2 存在非負數 遇見負數就不加,然後和前乙個子串行的和做比較,取大的 public class maxchildarray return items items.length 1 不是全負數的情況,sum必定大於等於0 int sum 0 int partsum 0...