POJ-1050 动态规划最大子段和最大子阵

1、最大子段

由于最大子段不可能以负数或负数段开头,可以以此得到算法

int max(int a[],int n)
{
    int sum,maxsum;
    int i ;
    sum = maxsum = 0;
    for(i = 0;isum +=a[i];
        if(sum>maxsum)//子段大于最大值,更新最大值
            maxsum = sum;
        else if(sum<0)//子段小于0,则归零
            sum = 0;
    }
    return maxsum;
}

### 2、最大子阵 ###
把二维的矩阵化作一维矩阵,每一行加为一个数就形成了一个一维数组,对这个一维数组求最大子段,就能得到结果

int rec[200][200];

int max(int n)
{
int i,j,k,p;
int maxnum,sum,_max=-1270000;
for(i=0;i

你可能感兴趣的:(POJ,算法,动态规划)