1、记忆搜索算法:
给n*n地图,老鼠初始位置在(0,0),它每次行走要么横着走要么竖着走,每次最多可以走出k个单位长度,且落脚点的权值必须比上一个落脚点的权值大,求最终可以获得的最大权值
2、思路
每次最多m步,记录四个方向的下一次走法可以获得的权值总和,只能直走。m种情况选最大。
3、代码实现
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<queue>
using namespace std;
const int N = 109;
int dp[N][N], a[N][N];
int px[] = {0, 0, -1, 1};
int py[] = {1, -1, 0, 0};
int dfs(int n, int m, int x, int y)
{
if(!dp[x][y])
{
int ans = 0;
for(int i=1; i<=m; i++)//最多m步
{
int tem