p7074
蒟蒻初学搜索,求大佬帮忙修改。
#include<bits/stdc++.h>
using namespace std;
bool vis[1015][1015];
int num[1015][1015],ans=0,n,m;
const int d[5]={-1,0,1,0,-1};
void dfs(int x,int y,int s){
if(x==n-1&&y==m-1) ans=max(ans,s);
for(int i=0;i<4;i++){
if(d[i]==1) continue;
int a=x+d[i];
int b=y+d[i+1];
if(vis[x][y]==0&&0<=a<=n-1&&0<=b<=m-1){
s+=num[x][y];
vis[x][y]=1;
dfs(a,b,s);
vis[x][y]=0;
}
}
}
int main(){
cin >> n >> m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin >> num[i][j];
}
}
ans=num[0][0];
dfs(0,0,ans);
cout << ans;
return 0;
}