码迷,mamicode.com
首页 > 其他好文 > 详细

传递纸条

时间:2019-12-05 13:14:25      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:info   algo   scan   def   ring   相交   png   return   csharp   

问题本质是从左上角到右下角的两条不相交路劲,权值最大

1--动态规划(二进程动态规划) 或者 网格图费用流

确定好转移状态吧

技术图片

 

 

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define maxn 60 
using namespace std;
int dp[maxn*2][maxn][maxn];
int map[maxn][maxn];
int n, m;

int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			scanf("%d", &map[i][j]);
		}
	}
	for (int i = 2; i <= n + m; i++) {
		for (int x = max(1, i - m); x <= n && x < i; x++) {
			for (int y = max(1, i - m); y <= n && y < i; y++) {

				int t = map[y][i - y];
				t += map[x][i - x];

				if (x != y || i == 2 || i == n + m ) {
					dp[i][x][y] = max(dp[i][x][y], dp[i-1][x][y] + t);
					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x - 1][y] + t);
					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x][y - 1] + t);
					dp[i][x][y] = max(dp[i][x][y], dp[i - 1][x - 1][y - 1] + t);
				}
			}
		}
	}
	printf("%d\n", dp[m + n][n][n]);
	return 0;
}

  

传递纸条

标签:info   algo   scan   def   ring   相交   png   return   csharp   

原文地址:https://www.cnblogs.com/lesning/p/11988522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!