1 条题解

  • 2
    @ 2023-8-14 19:12:55

    你知道吗,这道题我也不会做 (才怪) 👍

    因为这道题太难了,导致小脑发育不完全大脑完全不发育的*写不出来,所以大家复制完代码赶紧走懂吗什么你跟我说不懂那……我也没办法🎉️


    #include <iostream>
    using namespace std;
    char mp[21][21];
    int vis[21][21],num[21];
    int dx[4] = {0,1,0,-1},dy[4] = {1,0,-1,0};
    //n个方向
    int r,s,ans;
    bool check(int x,int y)
    {
       if(x > 0 && x <= r && y > 0 && y <= s) return true;
       return false;
    }
    //啊这……这怎么解释呢??????????
    void dfs(int x,int y,int step)
    {
    	if(ans < step) ans = step;
    	for(int i = 0;i < 4;i ++)
       {
    		int xx = x + dx[i];
    		int yy = y + dy[i];
    		if(check(xx,yy) && vis[xx][yy]==0 && num[mp[xx][yy] - 'A'] == 0)
          {
    			vis[xx][yy] = 1;
    			num[mp[xx][yy] - 'A'] = 1;
    			dfs(xx,yy,step + 1);
    			vis[xx][yy] = 0;
    			num[mp[xx][yy] - 'A'] = 0;
                //使用技能:回溯
    		}
    	}
    }
    int main() 
    {
        ios::sync_with_stdio(0);
        cin.tie(0),cout.tie(0);
    	cin >> r >> s;
    	for(int i = 1;i <= r;i ++)
        {
    		for(int j = 1;j <= s;j++) 
            {
    			cin >> mp[i][j];
    		}
    	}
    	num[mp[1][1] - 'A'] = 1;//啊为什么????????????
    	vis[1][1] = 1;
    	dfs(1,1,1);
    	cout << ans << '\n';
    }
    

    信息

    ID
    212
    时间
    1000ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    14
    已通过
    5
    上传者