41求助
查看原帖
41求助
917683
rnf5114楼主2023/5/11 18:48
#include <iostream>
using namespace std;
int map[150][150],n,m,ans=0,d[4][2]={{1,0},{-1,0},{0,1},{0,-1}},dx,dy,vis[150][150];                  
void dfs(int x,int y,int d1,int num){   
    if(vis[x][y]){               
        ans=max(ans,num-1);     
        return;
    }
    vis[x][y]=1;
    dx=x+d[d1][0]; 
	dy=y+d[d1][1];
    if(map[dx][dy])
        for(int i=0;i<4;i++){              
            if(i==d1){
            	continue; 
			}       
            dx=x+d[i][0];
            dy=y+d[i][1];
            if(map[dx][dy]==0)
                   dfs(dx,dy,i,num+1);
            }
    else
		dfs(dx,dy,d1,num+1);   
    vis[x][y]=0;             
}
int main(){
	string s;
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>s;
        map[s[0]-64][s[1]-'0']=1;
    }
    for(int i=1;i<=n;i++){
		map[i][0]=1;
		map[0][i]=1;
		map[n+1][i]=1;
		map[i][n+1]=1;   
	}
    dfs(1,1,0,1);  
	dfs(1,1,2,1);  
    cout<<ans;
    return 0;
}
2023/5/11 18:48
加载中...