描述
美美和小熊在玩棋盘游戏。美美给小熊一个m×n的棋盘,棋盘上每个位置都有一个值。小熊可以从任意一个位置开始,朝上下左右四个方向移动,但不能在对角线方向移动或是移动到界外。
小熊的目标是找到这样的路径:每次到达的位置的值都比上一个位置的值还要大(即路径的值是递增的)。
请找出最长的这样的路径。
输入
第一行n,m。1<=n,m<=200
接下来是n*m的棋盘矩阵
输出
最长的值递增的路径
输入样例 1
3 3 9 9 4 6 6 8 2 1 1
输出样例 1
4
来源
解题方法:回溯
自我错误纠正:不可以简单的遍历每个可以行走的方向后countstep++,这样会导致你每次从一个位置开始遍历时,countstep包括的步数其实涵盖了你在这个位置可以走的所有方向。
也不可以简单的用递归return dep[x+dx[i]][y+dy[i]]+1,这样只走了一个可以走的方向,没有对所有可以走的方向遍历。
#include <iostream>
#include <cstring>
using namespace std;
int m, n;
int g[200][200];
int visit[200][200];
int countstep;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int maxstep;
void dep(int x,int y)
{
int f=0;
for(int i