20分求调
查看原帖
20分求调
928955
_smart_stupid_楼主2023/9/2 17:49
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000][1000];
long long vis[1000][1000];
bool another_vis[1000][1000];
int dx[3]={1,-1,0};
int dy[3]={0,0,1};
void dfs(int x,int y,long long num){
	if(num<vis[x][y]) return ;
	else vis[x][y]=num;
	if(x==n-1&&y==m-1) {
		return ; 
	}
	for(int i=0;i<3;i++){
		int nx=x+dx[i];
		int ny=y+dy[i];
		if(nx>=0&&nx<n&&ny>=0&&ny<m&&another_vis[nx][ny]==0){
			another_vis[nx][ny]=1;
			dfs(nx,ny,num+a[nx][ny]);
			another_vis[nx][ny]=0;
		}
	}
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>a[i][j];
			vis[i][j]=-10000000000;
		}
	}
	dfs(0,0,a[0][0]);
	cout<<vis[n-1][m-1];
	return 0;
}

样例都过不了,为什么?

2023/9/2 17:49
加载中...