acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 资讯
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 题解

    #include<bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' const int N = 105; bool train[3][N]; // 初始火车位置 int n; bool dfs(int r, int rel){ if(rel >= 3 * n - 2) return true; // 主角到达最右列 for(int nr = r - 1; nr <= r + 1; nr++){ if(nr < 0 || nr > 2) continue; // 检查 (r, rel+1), (nr, rel+1), (nr, rel+3) bool ok = true; // 主角右移 1 格(火车未动):目标 (r, rel+1) if(rel + 1 <= n && train[r][rel + 1]) ok = false; // 行变后(火车未动):(nr, rel+1) if(ok && rel + 1 <= n && train[nr][rel + 1]) ok = false; // 火车左移 2 后:主角 (nr, rel+3) if(ok && rel + 3 <= n && train[nr][rel + 3]) ok = false; if(ok && dfs(nr, rel + 3)) return true; } return false; } int main(){ int t; scanf("%d", &t); while(t--){ int k; scanf("%d%d", &n, &k); memset(train, 0, sizeof(train)); int sr = -1; char buf[N]; for(int i = 0; i < 3; i++){ scanf("%s", buf); for(int j = 1; j <= n; j++){ if(buf[j-1] == 's'){ sr = i; } else if(buf[j-1] != '.'){ train[i][j] = true; } } } printf("%s\n", dfs(sr, 1) ? "YES" : "NO"); } return 0; }

    userId_undefined
    未知
    模拟·模拟练习生倔强青铜冒泡宗师→排序元老
    1阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页