mooc浙大数据结构网课
最大子列和问题
算法1.简单粗暴法
#include <stdio.h> int main(int argc, char **argv) { int n; scanf("%d",&n); int List[n]; for(int i=0;i<n;i++){ scanf("%d",&List[i]); } int x,y,z; int MaxSum=0,Sum=0; for(x=0;x<n;x++){ Sum = 0; for(y=x;y<n;y++){ Sum += List[y]; if(Sum > MaxSum) MaxSum = Sum; } } printf("%d",MaxSum); return 0; }
算法2.在线处理法
#include <stdio.h> int main(int argc, char **argv) { int n; scanf("%d",&n); int List[n]; for(int i=0;i<n;i++){ scanf("%d",&List[i]); } int j; int MaxSum=0,Sum=0; for(j=0;j<n;j++){ Sum += List[j]; if(Sum > MaxSum) MaxSum = Sum; else if (Sum < 0 ) Sum = 0; } printf("%d",MaxSum); return 0; }
算法3.分而治之
待补充
原文:https://www.cnblogs.com/CANntyield/p/10495716.html