博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ural 1146 Maximum Sum(DP)
阅读量:4511 次
发布时间:2019-06-08

本文共 795 字,大约阅读时间需要 2 分钟。

题目地址:

这题是求最大子矩阵和。方法是将二维转化一维。

首先用n*n的方法来确定矩阵的列。须要先进行预处理,仅仅对每行来说,转化成一维的前缀和,这样对列的确定仅仅须要前后两个指针来确定。仅仅须要用前缀和相减就可以得到。前后两个指针用n*n的枚举。

确定好了哪几列,那么再确定行的时候就转化成了一维的最大连续子序列的和。

再来一次O(n)的枚举就能够。

这样,总复杂就变成了O(n^3)。对于n为100来说,已经足够了。

代码例如以下:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;#define LL long longint dp[200][200];int main(){ int n, i, j, k, sum, x, max1; while(scanf("%d",&n)!=EOF) { max1=-INF; memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { scanf("%d",&x); dp[i][j]=dp[i][j-1]+x; } } for(i=1;i<=n;i++) { for(j=0;j

转载于:https://www.cnblogs.com/gcczhongduan/p/5261310.html

你可能感兴趣的文章
configparser模块
查看>>
SET方法内存管理
查看>>
3D数学读书笔记——矩阵基础
查看>>
jdk1.5多线程Lock接口及Condition接口
查看>>
四则运算分析题
查看>>
开博纪念
查看>>
(转)SQL一次性插入大量数据
查看>>
javascript event loop
查看>>
LIS
查看>>
微信公众号开发--用.Net Core实现微信消息加解密
查看>>
FastIO
查看>>
字符串循环右移-c语言
查看>>
解决从pl/sql查看oracle的number(19)类型数据为科学计数法的有关问题
查看>>
古训《增广贤文》
查看>>
职场的真相——七句话
查看>>
xcode命令行编译时:codesign命令,抛出“User interaction is not allowed.”异常 的处理...
查看>>
[转载]开机出现A disk read error occurred错误
查看>>
STM32 C++编程 002 GPIO类
查看>>
无线冲方案 MCU vs SoC
查看>>
进程装载过程分析(execve系统调用分析)
查看>>