dfs15分,求求大佬找下哪里有问题
查看原帖
dfs15分,求求大佬找下哪里有问题
367146
数学小王子楼主2020/11/13 20:15
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
bool vis[1005][1005];
int n,m,arr[1005][1005],ans=-0x7fffffff;
void dfs(int x,int y,int num){
	if(vis[x][y]==true)return;
	if(x<0||y<0||x>=n||y>=m)return;
	if(x==n-1&&y==m-1){
		ans=max(ans,num);
		return;
	}
	vis[x][y]=true;
	dfs(x+1,y,num+arr[x][y]);
	dfs(x-1,y,num+arr[x][y]);
	dfs(x,y+1,num+arr[x][y]);
	dfs(x,y-1,num+arr[x][y]);
	vis[x][y]=false;
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>arr[i][j];
	dfs(0,0,0);
	cout<<ans+arr[n-1][m-1];
	return 0;
}

考场上写的就是这个代码,洛谷上只有15分。第一个数据点错了,好奇怪。后面改了一下,long long也开了,是不是0也判断了,但是就是过不了。求助dalao

2020/11/13 20:15
加载中...