2 条题解

  • 0
    @ 2025-6-18 21:03:51
    #include <bits/stdc++.h>
    using namespace std;
    int n, m, ans;
    char g[25][25];
    int dx[] = {0, 0, 1, -1};
    int dy[] = {1, -1, 0, 0};
    bool check(char x, string s)
    {
        for (int i = 0; i < s.size(); i++)
            if (s[i] == x)
                return true;
        return false;
    }
    // 走到了 x,y,当前路径为 s
    void dfs(int x, int y, string s)
    {
        ans = max(ans, (int)s.size());
        for (int i = 0; i < 4; i++)
        {
            int nx = x + dx[i];
            int ny = y + dy[i];
            if (1 <= nx && nx <= n &&
                1 <= ny && ny <= m &&
                !check(g[nx][ny], s))
            {
                dfs(nx, ny, s + g[nx][ny]);
            }
        }
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n >> m;
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++)
                cin >> g[i][j];
        ans = 0;
        string s = " ";
        s[0] = g[1][1];
        dfs(1, 1, s);
        cout << ans << '\n';
        return 0;
    }
    
    • 0
      @ 2022-11-17 21:15:34
      #include<bits/stdc++.h>
      using namespace std;
      
      int dx[]={1,-1,0,0};
      int dy[]={0,0,1,-1};
      int r,c,ans;
      char g[25][25];
      //哪些字母被走过了
      bool flag[30]; 
      //当前走到了x,y
      //已经走过了flag这些字母
      //当前长度是step 
      void dfs(int x,int y,int step){
      	ans=max(ans,step);
      	for(int i=0;i<4;i++){
      		int nx=x+dx[i];
      		int ny=y+dy[i];
      		if(1<=nx&&nx<=r&&
      		   1<=ny&&ny<=c&&
      		   flag[g[nx][ny]-'A']==false)
      		{
      			flag[g[nx][ny]-'A']=true;
      			dfs(nx,ny,step+1);
      			flag[g[nx][ny]-'A']=false;			
      		}
      	}
      }
       int main()
      {
      	cin>>r>>c;
      	for(int i=1;i<=r;i++)
      		for(int j=1;j<=c;j++)
      			cin>>g[i][j];
      	ans=1;
      	flag[g[1][1]-'A']=true;
      	dfs(1,1,1);
      	cout<<ans<<"\n";
      	return 0;
      }
      
      
      
      • 1

      信息

      ID
      432
      时间
      1000ms
      内存
      128MiB
      难度
      5
      标签
      (无)
      递交数
      122
      已通过
      49
      上传者