//感謝網友firo
//july、2010.06.05。
//algorithm 1:時間效率為o(n*n*n)
intmaxsubsequencesum1(
const
inta,
intn)
return
maxsum;
} //algorithm 2:時間效率為o(n*n)
intmaxsubsequencesum2(
const
inta,
intn)
} return
maxsum;
} //algorithm 3:時間效率為o(n*log n)
//演算法3的主要思想:採用二分策略,將序列分成左右兩份。
//那麼最長子序列有三種可能出現的情況,即
//只出現在左部分.
//只出現在右部分。
//出現在中間,同時涉及到左右兩部分。
//分情況討論之。
static
intmaxsubsum(
const
inta,
intleft,
intright)
maxrightbordersum=0;
rightbordersum=0;
for(i=center+1;i<=right;i++)
intmax1=maxleftsum>maxrightsum?maxleftsum:maxrightsum;
intmax2=maxleftbordersum+maxrightbordersum;
return
max1>max2?max1:max2;
} //algorithm 4:時間效率為o(n)
//同上述第一節中的思路3、和4。
intmaxsubsequencesum(
const
inta,
intn)
return
maxsum;
}
子陣列之和的最大值
給定乙個陣列,查詢這個陣列的子陣列的最大和 比如 2,5,3,6,4,8,6 輸出最大和8 分析 假設已經找到乙個子陣列的最大和,這個子陣列是從陣列索引i到索引j。可以用如下式子描述,cur max a i j 對於下乙個數,也就是索引為j 1,這個最大和是否 將a j 1 加入cur max,需要...
2 14 子陣列之和的最大值
問題 求陣列的子陣列之和的最大值 解法一 遍歷 include include int maxsum int a,int n if sum maximum maximum sum return maximum int main printf d n maxsum array,5 return 0 解...
2 14 子陣列之和的最大值
問題 求陣列的子陣列之和的最大值 解法一 遍歷 include include int maxsum int a,int n if sum maximum maximum sum return maximum int main printf d n maxsum array,5 return 0 解...