poj1050 动态规划 求二维数组中子矩阵和的最大值

来源:互联网 发布:主机公园 php搭建 编辑:程序博客网 时间:2024/06/05 10:21

思路:将二维转化为一维一维思路:for(int i=1;i<=n;i++){    temp[i]=(tem[i-1]>0)?temp[i-1]:0+num[i];    if(Max<temp[i])      Max=temp[i];}

答案:

 

#include<stdio.h>#include<string.h>int num[110][110];int dp[110];int temp[110];int main(){    int n;    while(scanf("%d",&n)!=EOF)    {        for(int i=1; i<=n; i++)            for(int j=1; j<=n; j++)                scanf("%d",&num[i][j]);        int Max=0;        for(int i=1; i<=n; i++)        {            for(int j=i; j<=n; j++)            {                for(int k=1; k<=n; k++)                {                    temp[k]+=num[j][k];                    dp[k]=temp[k]+dp[k-1]>0?temp[k]+dp[k-1]:0;                    if(Max<dp[k])                        Max=dp[k];                }            }            memset(temp,0,sizeof(temp));        }        printf("%d\n",Max);    }    return 0;}

原创粉丝点击