分治算法求最大最小值c语言,[蓝桥杯][算法提高VIP]和最大子序列 (C语言代码)分治法...
解題思路:
注意事項:
參考代碼:#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
const?int?maxn?=?100001;
int?a[maxn];
int?maxsum(int?*A,?int?x,?int?y)???//返回左閉右開區間[x,y)中的最大連續和
{
int?v,?L,?R,?maxs;
if(y-x?==?1)?return?A[x];
int?m?=?x?+?(y-x)/2;???????//劃分
maxs?=?max(maxsum(A,x,m),maxsum(A,m,y));
v?=?0;
L?=?A[m-1];
for(int?i?=?m-1;?i?>=?x;?--i)????//合并
{
L?=?max(L,?v?+=?A[i]);
}
v?=?0;
R?=?A[m];
for(int?i?=?m;?i?
{
R?=?max(R,?v?+=?A[i]);
}
return?max(maxs,L+R);
}
int?main()
{
int?T;
scanf("%d",?&T);
for(int?i?=?0;?i?
{
scanf("%d",?&a[i]);
}
printf("%d\n",?maxsum(a,0,T));
return?0;
}
總結
以上是生活随笔為你收集整理的分治算法求最大最小值c语言,[蓝桥杯][算法提高VIP]和最大子序列 (C语言代码)分治法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 办信用卡需要担保人吗 信用卡担保人有风险
- 下一篇: 办信用卡查学历吗 办信用卡学历会核实吗