1 条题解
-
2
你知道吗,这道题我也不会做
(才怪)👍因为这道题太难了,导致小脑发育不完全大脑完全不发育的*写不出来,所以大家复制完代码赶紧走懂吗什么你跟我说不懂那……我也没办法🎉️
#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
- 上传者