标签: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;
}
标签:using 矩阵 bsp ret 习惯 namespace const scan print
原文地址:https://www.cnblogs.com/headboy2002/p/9375993.html