首页 > 其他 > 详细

To the Max

时间:2018-10-05 15:59:36      阅读:136      评论:0      收藏:0      [点我收藏+]

链接

[http://poj.org/problem?id=1050]

题意

给你一个矩阵,让你求子矩阵中的元素之和最大

分析

其实跟最大和子序列一样只不过维数增加了,你只需要降维就好了

技术分享图片

代码

#include<iostream>
#include<string.h>
using namespace std;
#define ll long long

int m[200][200];
int main(){
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int n,i,j,k;
    while(cin>>n){
        memset(m,0,sizeof(m));
        for(i=1;i<=n;i++){
            for(j=1;j<=n;j++)
            cin>>m[i][j],m[i][j]+=m[i-1][j];
        }
     int sum=0;
     int ans=-130; 
     for(i=1;i<=n;i++){
        for(j=i;j<=n;j++){
            sum=0;
            for(k=1;k<=n;k++){
                sum+=m[j][k]-m[i-1][k];//第k列第i个元素到第j个元素之和
                 if(sum<0) sum=0;//如果小于0从新的地方开始
                 if(sum>ans) ans=sum;//更新最大值 
             }
         }
       }
       cout<<ans<<endl; 
    } 
    return 0;
} 

To the Max

原文:https://www.cnblogs.com/mch5201314/p/9744777.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!