1 条题解

  • 1
    @ 2025-7-26 12:55:02
    #include<bits/stdc++.h>
    using namespace std;
    int cnt;
    string ans;
    char mp[11][11];
    int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
    bool in(int x,int y)
    {
        return 1<=x&&x<=5&&1<=y&&y<=5;
    }
    set<string> s;
    void dfs(int x,int y,int dep,string an)
    {
        an+=mp[x][y];
       if(dep==6)
       {
           if(!s.count(an))
          {
              s.insert(an);
              cnt++;
          }
          return;
       }
       for(int i=0;i<4;i++)
       {
    	   int nx=x+dir[i][0],ny=y+dir[i][1];
           if(in(nx,ny))
        		dfs(nx,ny,dep+1,an);
       }
       return;
    }
    int main()
    {
    	for(int i=1;i<=5;i++)
            for(int j=1;j<=5;j++)
         		cin>>mp[i][j];
        for(int i=1;i<=5;i++)
            for(int j=1;j<=5;j++)
                dfs(i,j,1,"");
        cout<<cnt<<endl;
        return 0;
    }
    
    • 1

    信息

    ID
    311
    时间
    1000ms
    内存
    16MiB
    难度
    10
    标签
    递交数
    3
    已通过
    3
    上传者