hdu1081 最大子矩阵
Posted slgkaifa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu1081 最大子矩阵相关的知识,希望对你有一定的参考价值。
最大子矩阵自然直在最大连续子序列的升级版 只是其原理都是用到了动态规划思想 仅仅是矩阵用到了枚举 +合并 把非常多列看成是一列的和
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; #define INF -10000000 int n,num[110][110],mark[110]; int linemax() { int x=0,i,Max=INF; for(i=1;i<=n;i++) { if(x>0) { x+=mark[i]; } else x=mark[i]; if(x>Max) Max=x; } return Max; } int rowmax() { int i,j,k; int Max=INF; for(i=1;i<=n;i++)//枚举全部行 { memset(mark,0,sizeof(mark)); for(j=i;j<=n;j++) { for(k=1;k<=n;k++) { mark[k]+=num[j][k]; //列向求和 } int x=linemax();//最大连续子序列求法求出最大值 if(x>Max) Max=x; } } return Max; } int main() { int i,j; while(~scanf("%d",&n)) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&num[i][j]); printf("%d\n",rowmax()); } return 0; }
以上是关于hdu1081 最大子矩阵的主要内容,如果未能解决你的问题,请参考以下文章
HDU 1081 To the Max 最大子矩阵(动态规划求最大连续子序列和)