已知一組整數資料 a1,a2,a3,a4,a5,a6.....an ,並返回最大連續和。
先給出最極品的演算法:
#include#include#include#includeconst int maxn=10000;
int a[maxn],s[maxn];
int main()
printf("min_s=%d\n",min_s);
printf("n=%d tot=%d\n",n,tot);
printf("%d\n",best);
return 0;
}
剩下的由高效到低效排序如下:
#include#include#include#includeconst int maxn=10000;
int a[maxn],tot;
int maxsum(int *a,int x,int y)//在[x,y)左閉右開區間中求最大連續和
int main()
printf("n=%d tot=%d\n",n,tot);
printf("%d\n",best);
return 0;
}
o(n*n*n):
#include#include#include#includeconst int maxn=30;
int a[maxn];
int main()
printf("n=%d tot=%d\n",n,tot);
printf("%d\n",best);
printf("time used=%.2lf\n",(double)clock()/clocks_per_sec);
return 0;
}
求解最大連續子串行和問題
解法1 maxsubsum1 a,n 演算法中用三重迴圈來窮舉所有的連續子串行,計算它們的和,時間複雜度為t n o n 3 1 long maxsubsum1 int a,intn 2 14if thissum maxsum maxsum thissum 15 16 17return maxsum...
最大連續和
這個問題對我來說還挺難的,當初做dp時水過去了,但沒徹底理解,這次打算好好分析一下,爭取徹底搞懂。首先,像 1 1 2 2 3 3 4 4 5 5這樣的數列,想要找連續最大和,可以有很多種方法,從最慢的列舉o n 3 到最快的動態規劃o n 毫無疑問,我們要選擇複雜度低的演算法。所以我這裡就只分析兩...
最大連續和
求陣列中數的最大連續和,如 1,1,1,1,1 最大連續和為3 一 動態規劃 當我們從頭到尾遍歷這個陣列的時候,對於陣列裡的乙個整數,它有幾種選擇呢?它只有兩種選擇 1 加入之前的subarray 2.自己另起乙個subarray。那什麼時候會出現這兩種情況呢?設狀態為f j 表示以s j 結尾的最...