To the Max
Posted mch5201314
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了To the Max相关的知识,希望对你有一定的参考价值。
链接
[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的主要内容,如果未能解决你的问题,请参考以下文章
RuntimeError: An attempt has been made to start a new process before the current process has...(代码片段
ubuntu16.04 yum报错:There are no enabled repos. Run “yum repolist all“ to see the repos you have.(代码片段
[POJ1050]To the Max (矩阵,最大连续子序列和)
[Grid Layout] Use auto-fill and auto-fit if the number of repeated grid tracks is not to be def(代码片段