zoukankan      html  css  js  c++  java
  • POJ 1050 To the Max

    //此题又是DP,我是看了结题报告才想出来的。。。。。。。。。。。。
    //苦想了好长时间,就是一层纸捅不破,原来那就
    //是应该加一个二维数组记录每行的前i个值得和
    //说白了就是记录一下状态,因为题意是一个二维矩阵
    //和得优化,所以一维的状态时不能够满足的,看来DP还是没
    //理解透彻

    #include<iostream>
    using namespace std;

    int main()
    {
        
    int  a[110][110],i,j,k,sum,max=-10000,s[110][110];
        
    int n,temp;
        
    while(scanf("%d",&n)!=EOF)
        {
            memset(s,
    0,sizeof(s[0][0]));
            
    for(i=0;i<n;++i)
                
    for(j=1;j<=n;++j)
                {
                    scanf(
    "%d",&a[i][j-1]);
                    s[i][j]
    =s[i][j-1]+a[i][j-1];
                }
            
    for(i=0;i<n;++i)
                
    for(j=i;j<n;++j)
                {
                    sum
    =0;
                    
    for(k=0;k<n;++k)
                    {
                        temp
    =s[k][j]-s[k][i];
                        sum
    +=temp;
                        
    if(sum<0) sum=0;
                        
    else if(sum>max)
                            max
    =sum;
                    }
                }
            printf(
    "%d\n",max);
        }
        
    return 1;
    }


     

  • 相关阅读:
    红黑树
    二叉搜索树
    散列表
    快速排序
    堆排序
    归并排序
    插入排序
    Shell脚本之:函数
    Shell脚本之:退出循环
    ACM刷题之路(四)2018暑假实验室集训——深广搜专题题解
  • 原文地址:https://www.cnblogs.com/lvpengms/p/1662766.html
Copyright © 2011-2022 走看看