首页 > 代码库 > hdu1081 最大子矩阵
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 最大子矩阵
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。