求助,记搜还是T了一个点
查看原帖
求助,记搜还是T了一个点
206423
焚魂楼主2021/2/8 22:52
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int d,c,ans = -1,un = -1;
int map[110][110];
int dx[] = {1,-1,0,0};
int dy[] = {0,0,1,-1};
int f[110][110];

int dfs(register int x,register int y) {
	if(f[110][110]) {
		return f[110][110];
	}
	f[x][y] = 1;
	for(register int i = 0;i < 4;i++) {
		register int xx = x+dx[i];
		register int yy = y+dy[i];
		if(xx < 1 || xx > d || yy < 1 || yy > c || map[xx][yy] >= map[x][y])
		continue;
		dfs(xx,yy);
		f[x][y] = max(f[x][y],f[xx][yy]+1);
	}
	return f[x][y];
}

int main() {
	cin >> d >> c;
	for(register int i = 1;i <= d;i++) {
		for(register int j = 1;j <= c;j++) {
			scanf("%d",&map[i][j]);
		}
	}
	
	for(register int i = 1;i <= d;i++) {
		for(register int j = 1;j <= c;j++) {
			un = max(dfs(i,j),un);
		}
	}
	
	printf("%d",un);
	
	return 0;
}
2021/2/8 22:52
加载中...