poj1050最大子矩阵和
这篇是看了别人的报告写的,就当是屡屡思路好了.
题目大意。给定一个n阶矩阵(方阵),每一个元素中存在一个数字.任务就是求出一个最大的子矩阵使得矩阵元素之间的和是最大的.
n=100;
1.矩阵A[m][n]的和能够直接 sum+=A[i][j] ( i = 0 to n-1 j=0 to n-1); 还能够求出第i列的和p[i],再将所在列加起来,(当然行是同理的).
2.因此所选的矩阵的行k能够枚举(0<=k<=n-1),此时能够现将列加起来,然后找到这些列中连续最大和就可以.这就是选出的矩阵最大和.
3.在全部矩阵中选出最大和的一个。
/*Source Code
Problem: 1050 User:
Memory: 388K Time: 32MS
Language: GCC Result: AcceptedSource Code*/#include <stdio.h>int max(int a,int b){return a>b?
a:b; } int main(){ int i,j,k,n; int ans=-0xfffffff; int A[101][101]={0}; scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<n;j++){ scanf("%d",&A[i][j]); } } for(i=0;i<n;i++){ for(j=0;j<n;j++){ int add[101]={0},d[101]={0}; for(k=0;k<n;k++){ int l; for(l=i;l<=j;l++){ add[k]+=A[l][k]; } } d[0]=add[0]; ans=max(ans,d[0]); for(k=0;k<n;k++){ d[k]=d[k-1]>0?d[k-1]+add[k]:add[k]; ans=max(ans,d[k]); } } } printf("%d\n",ans); return 0; }
转载于:https://www.cnblogs.com/yxwkf/p/5410217.html
poj1050最大子矩阵和相关推荐
- Bailian2766 最大子矩阵【最大子段和+DP】
最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 ...
- 51Nod-1051 最大子矩阵和【最大子段和+DP】
1051 最大子矩阵和 基准时间限制:2秒 空间限制:131072KB 分值:40难度:4级算法题 一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值. 例如 ...
- 求一个矩阵的最大子矩阵
#include <iostream> #include <string> #include <assert.h> #include <malloc.h> ...
- 最大子矩阵(降维处理)
题目描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的矩阵 0 -2 -7 0 9 2 -6 2 -4 1 - ...
- 带限制条件的最大子矩阵 - 牛客
链接:https://www.nowcoder.com/acm/contest/131/B 来源:牛客网 题目描述 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 Mi,j. 请寻找一个子 ...
- 软件工程——求二维数组所有子矩阵的和的最大值
题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为 ...
- 子矩阵(暴搜(全排列)+DP)
子矩阵(暴搜(全排列)+DP) 一.题目 子矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 1 解决: 1 [提交][状态][讨论版] 题目描述 给出如下定义: 1. 子矩阵:从一 ...
- 【降维解法:最大字段和-最大子矩阵和-最终版最大子长方体和】【UVA10755】Garbage Heap...
突然感觉刷完这一套专题后 码力有了质的飞跃,fighting 努力会有结果! 最大字段和是一个很经典的问题 O(n)算法 而对于最大子矩阵和 可以思考一个这样的想法 枚举上下边界i,j把i到j这一段的 ...
- LeetCode Maximal Square(最大子矩阵)
问题:给出一个由0,1组成的二维数组,求由1组成的最大子矩阵 思路:第一种方式使用暴力法,在遍历二维数组时,如果当前元素是1,则以当前位置为起点,判断先增的一行,一列是否全是1,如果是,则将当前边长度 ...
最新文章
- 025_Excel知识汇总
- 配置用户通过Telnet登录设备的身份认证(AAA本地认证)
- Linux下磁盘读写优化的分析
- 又一款4800像素手机曝光:vivo V15 Pro
- 自己做的一个小程序 可采集、导出、模板、配置
- python爬虫赚钱的经历-十年真ㆍPython大佬用爬虫赚钱的自述!看完学到了!
- 三角形中惊现叛徒!自己胖的像个球,却能成就世界上最快的赛车引擎......
- 嵌入式linux调试技术
- php探针存在xss漏洞
- XenServer 6.5实战:Creating a Storage Repository (CIFS)
- webpack4打包vue前端多页面项目
- 医疗保健行业未来发展的5大趋势预测
- 计算机网络(第七版)谢希仁编著 前五章部分课后答案详解
- 错误:has been compiled by a more recent version of the Java Runtime (class file version 56.0)
- Java固定资产管理系统源码
- python 手机号码归属地 软件,Python查询手机号码归属地几种方法
- 大数运算(加减乘除)
- Win10 中U盘不识别的解决方法
- julia集 matlab代码,Mandelbrot集和Julia集的分形图之matlab实现.docx
- Method类及其用法