標籤:png 3.1 int idt http stat void ram 負數
題目:返回一個整數數組中最大子數組的和。
要求:
輸入一個一維整形數組,數組裡有正數也有負數。
一維數組首尾相接,象個一條首尾相接帶子一樣。
數組中連續的一個或多個整數組成一個子數組,每個子數組都有一個和。求所有子數組的和的最大值。
程式設計思想:程式中使用到一個用來求數組的最大子數組和的函數,這裡可以將原數組的前n-1項加到數組的後面,形成一個新的數組,這樣就可以求這種首尾相連的數組的最大子數組和了。
原始碼:
public class zishuzu {
/**
* @param args
*/
public static int max(int array[])
{
int Max=0;
int sum=0;
int len;
len=array.length;
for(int i=0;i<len;i++)
{
sum+=array[i];
if(sum>Max)
{
Max=sum;
}
if(sum<0)
{
sum=0;
}
}
return Max;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,2,-3,5,7,-8};
System.out.print("測試數組為:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+",");
}
System.out.println("");
System.out.println("該數組最大子數組的值為:"+max(a));
int b[]={1,2,-3,5,7,-8,1,2,-3,5,7};
System.out.print("將數組首尾相連後,數組等價於:");
for(int k=0;k<b.length;k++)
{
System.out.print(b[k]+",");
}
System.out.println("");
System.out.println("該數組最大子數組的值為:"+max(b));
}
}
實驗結果:
周活動總結表:
日期/任務 |
聽課 |
閱讀課本 |
課下學習 |
|
日總計 |
周日3.26 |
|
|
|
|
|
周一 |
120m |
30m |
30m |
|
150m |
周二 |
|
|
40m |
|
40m |
周三 |
|
|
50m |
|
50m |
周四 |
120m |
40m |
20m |
|
180m |
周五 |
|
|
40m |
|
40m |
周六 |
|
|
40m |
|
40m |
周總計 |
240m |
70m |
2100m |
|
540m |
時間記錄日誌:
日期 |
開始時間 |
結束時間 |
停機時間 |
淨時間 |
活動 |
備忘 |
C |
U |
3.6 |
14:00 |
16:00 |
10m |
110m |
上課,編程 |
軟體工程課 |
|
|
3.7 |
19:00 |
21:00 |
20m |
100m |
看書,編程 |
寫軟體工程作業 |
|
|
3.8 |
19:00 |
21:00 |
15m |
105m |
看書,編程 |
學javaweb |
|
|
3.9 |
16:00 |
18:00 |
10m |
110m |
上課 |
Javaweb上課 |
|
|
3.10 |
18:00 |
20:00 |
30m |
90m |
構思,寫java |
寫四則運算程式3 |
|
|
軟體工程個人作業04(求數組最大子數組的和)