#include<stdio.h>
#define n 12
#define MAX(a,b) ((a)>(b))?(a):(b)
int f[n][n];
int main(){
int a[11]={0,-1,2,-2,3,4,-5,6,-9,6,2};
int i,j;
int sum=0;
for(i=1;i<n-1;i++)
{
sum+=a[i];
f[i][i]=sum;
f[i][0]=0;
}
for(i=2;i<n-1;i++)
for(j=1;j<i;j++){
f[i][j]=MAX(f[i-1][j],f[i-1][j-1]+a[i]);
}
for(i=1;i<n-1;i++)
for(j=0;j<=i;j++)
{
printf("%d\t",f[i][j]);
if(j==i) printf("\n");
}
return 0;
}
本文介绍了一个使用C语言实现的动态规划算法,该算法用于从给定数组中找出具有最大和的连续子数组。通过定义二维数组f来记录中间结果,最终输出所有可能的最大子数组和。
2428

被折叠的 条评论
为什么被折叠?



