5 solutions

  • 0
    @ 2026-3-15 15:03:44

    极简版:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=110;
    int dx[]={-1,1,0,0},dy[]={0,0,-1,1};
    bool st[N];
    char g[N][N];
    int n,m;
    int ans=1;
    void dfs(int x,int y,int len){
    	ans=max(ans,len);
    	for(int i=0;i<4;i++){
    		int a=x+dx[i],b=y+dy[i];
    		if(a<0||a>=n||b<0||b>=m||st[g[a][b]]) continue;
    		st[g[a][b]]=1;
    		dfs(a,b,len+1);
    		st[g[a][b]]=0;	
    	}
    }
    int main(){
    	cin>>n>>m;
    	for(int i=0;i<n;i++) cin>>g[i];
    	st[g[0][0]]=1;
    	dfs(0,0,1);
    	cout<<ans;
    	return 0;
    }
    
    

    Information

    ID
    1008
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    78
    Accepted
    19
    Uploaded By