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

luogu1508 Likecloud-吃、吃、吃

时间:2018-07-27 10:47:46      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:using   矩阵   bsp   ret   习惯   namespace   const   scan   print   

题目大意

  餐桌被划分为了n*m个小方格,每一个方格中都有一个圆形的巨型大餐盘,上面盛满了令李大水牛朝思暮想的食物。李大水牛已将餐桌上所有的食物按其所能提供的能量打了分(有些是负的,因为吃了要拉肚子),他决定从自己所处的位置吃到餐桌的另一侧,但他吃东西有一个习惯——只吃自己前方或左前方或右前方的盘中的食物。求最大获得能量。

 

  矩阵DP裸题。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAX_ROW = 210, MAX_COL = 210;
int TotRow, TotCol;
int A[MAX_ROW][MAX_COL], F[MAX_ROW][MAX_COL];

int DP()
{
	memset(F, 0xcf, sizeof(F));
	F[0][(TotCol + 1) / 2] = 0;
	for (int row = 1; row <= TotRow; row++)
		for (int col = 1; col <= TotCol; col++)
		{
			F[row][col] = max(F[row][col], F[row - 1][col - 1] + A[row][col]);
			F[row][col] = max(F[row][col], F[row - 1][col + 1] + A[row][col]);
			F[row][col] = max(F[row][col], F[row - 1][col] + A[row][col]);
		}
	int ans = 0;
	for (int i = 1; i <= TotCol; i++)
		ans = max(ans, F[TotRow][i]);
	return ans;
}

int main()
{
	scanf("%d%d", &TotRow, &TotCol);
	for (int i = 1; i <= TotRow; i++)
		for (int j = 1; j <= TotCol; j++)
			scanf("%d", &A[TotRow - i + 1][j]);
	printf("%d\n", DP());
	return 0;
}

  

luogu1508 Likecloud-吃、吃、吃

标签:using   矩阵   bsp   ret   习惯   namespace   const   scan   print   

原文地址:https://www.cnblogs.com/headboy2002/p/9375993.html

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