提交时间:2024-08-21 13:29:41

运行 ID: 180439

#include <bits/stdc++.h> using namespace std; int road[100], dx[5]= {0,1,2,2,1}, dy[5]= {0,-2,-1,1,2}; int tx, ty; bool flag; void dfs(int x, int y, int k) { if (flag == 1) { return; } if (x == tx && y == ty) { flag = 1; for (int i = 0; i < k; i++) { cout << road[i] << " "; } return; } if ((ty - y) > 2 * (tx - x)) return; for (int i = 1; i <= 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (!flag && nx >= 1 && nx <= tx && ny >= 1 && ny <= ty) { road[k] = i; dfs(nx, ny, k + 1); } } return; } int main() { cin >> tx >> ty; dfs(1, 1, 0); return 0; }