注意:在實際問題中可能題目要求至少選乙個,可能可以乙個都不選
只返回最大子段和
#include
#include
using
namespace std;
const
int maxn =
2e5+10;
const
int inf =
0x7fffffff
;int n;
int a[maxn]
;int
maxsum()
return res;
}int
main()
cout<<
maxsum()
/如果返回值小於0,可以置零表示乙個都不選
return0;
}
返回結果並返回左右端點位置#include
#include
using
namespace std;
const
int maxn =
2e5+10;
const
int inf =
0x7fffffff
;int n;
int a[maxn]
;int
maxsum
(int
&start,
int&ed)
if(cur <0)
}return res;
}int
main()
int s,t;
cout<<
maxsum
(s,t)
/if返回值小於0,可以乙個都不選,則置為0
cout<' '
}
最大子段和 (dp
n個整數組成的序列a1,a2,a3,ann,求該序列如ai ai 1 aj的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13。和為20。第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數 10 9 ai 10 9 ...
最大子段和(dp)
最基礎的的最大子段和,設dp i dp i dp i 為以num i num i num i 結尾的最大子段和,有dp i m ax d p i 1 n um i nu m i dp i max dp i 1 num i num i dp i max dp i 1 num i n um i 最終結果...
最大子段和 經典dp
n個整數組成的序列a11,a22,a33,ann,求該序列如aii ai 1i 1 ajj的連續子段和的最大值。當所給的整數均為負數時和為0。例如 2,11,4,13,5,2,和最大的子段為 11,4,13。和為20。input 第1行 整數序列的長度n 2 n 50000 第2 n 1行 n個整數...