求子数组的最大和
2014-04-10 20:43
239 查看
这个题目其实就是最大连续字段和,在动态规划部分讲过。
现在为了阿里面试,再次拿出来复习一下。
现在为了阿里面试,再次拿出来复习一下。
#include<stdio.h> int main() { int a[100]; int dp[100]; int n,start,end,max; while(scanf("%d",&n)==1) { int i; for(i=0;i<n;i++) scanf("%d",&a[i]); max = 0; dp[0] = a[0]; for(i=1;i<n;i++) { if(dp[i-1]>0) dp[i] = dp[i-1]+a[i]; else dp[i] = a[i]; if(dp[i]>max) { max = dp[i]; if(dp[i] == a[i]) { start = i; end = i; } else { end = i; } } } printf("max=%d,start=%d,end=%d",max,start,end); } }