博客
关于我
51nod 1084 矩阵取数问题 V2
阅读量:631 次
发布时间:2019-03-14

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

51nod 1084 矩阵取数问题 V2

递归式:

if x1 != x2 | dp[step + 1][x1][x2] = max{dp[step][x1’][x2’]} + a[x1][y1] + a[x2][y2]
if x1 == x2 | dp[step + 1][x1][x2] = max{dp[step][x1’][x2’]} + a[x1][y1]。
使用step减少空间使用
如图:
这里写图片描述
初始值:
dp[0][x][y] = 0;

#include 
#include
#include
#include
#include
#include
#include
using namespace std;#define LL long long#define INF 0x3f3f3f3f#define PI acos(-1.0)#define E 2.71828#define MOD 1000000007#define N 210#define M 5010int n,m;int p[N][N];int dp[N*2][N][N];int main(){ scanf("%d%d",&m,&n); for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) scanf("%d",&p[i][j]); memset(dp,0,sizeof(dp)); for(int k = 1; k < n+m; k++) { for(int i = 1; i<=n && i<=k; i++) { for(int j = 1; j<=n && j<=k; j++) { dp[k][i][j]=max(dp[k][i][j],dp[k-1][i-1][j-1]+p[i][k-i+1]+(i==j?0:p[j][k-j+1])); dp[k][i][j]=max(dp[k][i][j],dp[k-1][i-1][j]+p[i][k-i+1]+(i==j?0:p[j][k-j+1])); dp[k][i][j]=max(dp[k][i][j],dp[k-1][i][j-1]+p[i][k-i+1]+(i==j?0:p[j][k-j+1])); dp[k][i][j]=max(dp[k][i][j],dp[k-1][i][j]+p[i][k-i+1]+(i==j?0:p[j][k-j+1])); //printf("dp[%d][%d][%d] = %d\n",k,i,j,dp[k][i][j]); } } } printf("%d\n",dp[n+m-1][n][n]); return 0;}
你可能感兴趣的文章
Nacos配置中心集群原理及源码分析
查看>>
nacos配置自动刷新源码解析
查看>>
Nacos集群搭建
查看>>
nacos集群搭建
查看>>
nagios安装文档
查看>>
name_save matlab
查看>>
Nami 项目使用教程
查看>>
NAT-DDNS内网穿透技术,解决动态域名解析难题
查看>>
NativePHP:使用PHP构建跨平台桌面应用的新框架
查看>>
NAT技术
查看>>
NAT模式下虚拟机centOs和主机ping不通解决方法
查看>>
NAT的两种模式SNAT和DNAT,到底有啥区别?
查看>>
Navicat for MySQL 命令列 执行SQL语句 历史日志
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>
Navicat Premium 12 卸载和注册表的删除
查看>>
navicat 系列软件一点击菜单栏就闪退
查看>>
navicat 连接远程mysql
查看>>
Navicat下载和破解以及使用
查看>>
navicat创建连接 2002-can‘t connect to server on localhost(10061)且mysql服务已启动问题
查看>>
Navicat可视化界面导入SQL文件生成数据库表
查看>>