题目1139:最大子矩阵
来源:互联网 发布:酷派手机自动开启数据 编辑:程序博客网 时间:2024/06/11 04:10
#include <stdio.h> #include <stdlib.h> #define MAX 110 int MaxSubMerticx(int *a,int N) //一维最大序列和问题 { int max,dp[MAX],i; max=a[0]; dp[0]=a[0]; for(i=1;i<N;i++) { dp[i]=(dp[i-1]+a[i])>a[i]?(dp[i-1]+a[i]):a[i]; //最长子序列 if(dp[i]>max) max=dp[i]; } return max; } int main() { // int N,metricx[MAX][MAX],dp[MAX],sum,max; int i,j,k; while(scanf("%d",&N)!=EOF) { for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",&metricx[i][j]); max=metricx[0][0]; for(i=0;i<N;i++) //从第i行开始向下,依次枚举所有可能的矩阵 { for(j=0;j<N;j++) //保存从第i行到第j行的列和,相当于纵向压缩,将矩阵列压缩为一个点,从而将最大子矩阵(二维,纵向+横向)转换为最大序列和(一维,纵向一定,横向最大),达到降维的目的 dp[j]=0; for(j=i;j<N;j++) { for(k=0;k<N;k++) //计算到达j行为止的每一列的和 dp[k]+=metricx[j][k]; sum=MaxSubMerticx(dp,N); //求出在纵向为从i到j行,横向为0-N的最大横向方向子序列 if(sum>max) max=sum; //更新全局最优解 } } printf("%d\n",max); } return 0; } /************************************************************** Problem: 1139 User: cust123 Language: C++ Result: Accepted Time:50 ms Memory:1020 kb****************************************************************/
0 0
- 题目1139:最大子矩阵
- 题目1139:最大子矩阵
- 题目1139:最大子矩阵
- 题目1139:最大子矩阵
- 最大子矩阵题目
- 九度题目1139:最大子矩阵
- 动态规划_题目1139:最大子矩阵
- 九度OJ; 题目1139:最大子矩阵
- 九度OJ 题目1139:最大子矩阵
- 题目1497:面积最大的全1子矩阵
- 题目1497:面积最大的全1子矩阵
- HDOJ 题目1559 最大子矩阵(dp)
- 题目1497:面积最大的全1子矩阵
- 竞赛题目讲解-【Greater New York 2001】最大子矩阵
- 九度OJ 1139 最大子矩阵
- 九度OJ 1139 最大子矩阵
- 九度1139 最大子矩阵 DP
- 题目:最大子数组
- Java中的代理设计模式
- 网页静态化与bease64加密cookie
- PowerDesigner生成mysql数据库表结构的sql建表语句时没有comment注释的解决方法和去掉comment注释的解决方法
- 我的C#学习历程
- ZOJ2313 Chinese Girls' Amusement(大数运算,找规律)
- 题目1139:最大子矩阵
- 使用Maven插件整合protocol buffer
- 一篇SSM框架整合友好的文章(一)
- 虚拟机的基本管理和快照
- R’s Scoping
- CMake学习笔记(二)——CMake语法
- QT在构造函数中退出程序
- Android中的socket编程,基础
- iOS移动端架构的那些事