給定k個整數組成的序列,「連續子列」被定義為,其中 1≤i≤j≤k。「最大子列和」則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。
提供了4種演算法
/*
演算法1
int maxsum1(int a, int n)
if(thissum > maxsum)
}//j迴圈結束
}//i迴圈結束
return maxsum;
} */
/*演算法2
int maxsum1(int a, int n)
}//j迴圈結束
}//i迴圈結束
return maxsum;
} */
/*演算法3-----分而治之
int max3( int a, int b, int c )
int divideandconquer( int list, int left, int right )
//下面是"分"的過程
center = ( left + right ) / 2;
//找到中分點 遞迴求得兩邊子列的最大和
maxleftsum = divideandconquer( list, left, center );
maxrightsum = divideandconquer( list, center+1, right );
// 下面求跨分界線的最大子列和
maxleftbordersum = 0; leftbordersum = 0;
for( i=center; i>=left; i-- ) //左邊掃瞄結束
maxrightbordersum = 0;
rightbordersum = 0;
for( i=center+1; i<=right; i++ ) // 右邊掃瞄結束
//下面返回"治"的結果
return max3( maxleftsum, maxrightsum, maxleftbordersum + maxrightbordersum );
} int maxsubseqsum3( int list, int n )
*/int maxsum1(int a, int n)
else if(thissum < 0)//如果當前子列和為負數
thissum = 0;//則無法是當前值增大,拋棄
} return maxsum;
}*/
最大子列和問題
給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...
最大子列和問題
給定k個整數組成的序列,連續子列 被定義為,其中 1 i j k。最大子列和 則被定義為所有連續子列元素的和中最大者。例如給定序列,其連續子列有最大的和20。現要求你編寫程式,計算給定整數序列的最大子列和。輸入格式 輸入第1行給出正整數 k 100000 第2行給出k個整數,其間以空格分隔。輸出格式...
最大子列和問題
給出乙個序列,求出最大子列和。演算法一 long maxsum int a,int n return maxsum 這是乙個窮舉的演算法,有三個巢狀的for迴圈,時間複雜度為o n 3 在計算的時候有很多不必要的重複項,例如當i 0,j 3時,和的計算為 a 1 a 2 a 3 當i 0,j 4時,...