Forrest


私信TA

用户名:dotcpp0717441

访问量:1717

签 名:

等  级
排  名 147
经  验 7131
参赛次数 1
文章发表 79
年  龄 0
在职情况 教师
学  校 优学乐程
专  业

  自我简介:

解题思路:从任何一点出发寻找最长路径

注意事项:

参考代码:

#include<iostream>
using namespace std;
const int N = 1e2 + 10;
int g[N][N], f[N][N],r,c,d[4][2]={{-1,0},{1,0},{0,1},{0,-1}},res; 
int dfs(int i, int j){
	if(f[i][j] > 0) return f[i][j];
	int ans = 0;
	for(int k = 0; k < 4; k ++){
		int pi = d[k][0] + i;
		int pj = d[k][1] + j;
		if(pi >= 1 && pi <= r && pj >=1 && pj <= c && g[pi][pj] < g[i][j]) 
			ans = max(ans, dfs(pi,pj));
	}
	return f[i][j] = ans + 1;
}
int main()
{
	cin >> r >> c;
	for(int i = 1; i <= r; i ++)
		for(int j = 1; j <= c; j ++)
			cin >> g[i][j];	
	for(int i = 1; i <= r;  i ++)
		for(int j = 1; j <= c; j ++)
			res = max(res, dfs(i,j));			
	cout << res;
	return 0;
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区