Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
180587 | 万曜诚 | 骑士遍历2 | C++ | 解答错误 | 0 | 63 MS | 244 KB | 874 | 2024-08-21 16:20:59 |
#include <bits/stdc++.h> using namespace std; int n; int a[20][20]; int dx[8] = {-2,-2,-1,1,2,2,1,-1}; int dy[8] = {-1,1,2,2,1,-1,-2,-2}; int flag = 0; void dfs(int x,int y,int num) { int x1,y1; if(num == n*n) { flag = 1; return; } for(int i = 0;i < 8;i++) { x1 = x + dx[i]; y1 = y + dy[i]; if(x1 > 0 && x1 <= n && y1 > 0 && y1 <= n && !a[x1][y1]) { num = num + 1; a[x1][y1] = num; dfs(x1,y1,num); num = num - 1; if(flag) return; a[x1][y1] = 0; } x1 = x + dx[i]; y1 = y + dy[i]; } } int main() { int x,y; cin >> n >> x >> y; a[x][y] = 1; dfs(x,y,1); for(int i = 0;i < n;i++) { for(int j = 0;j < n;j++) { if(a[i][j] == 0) { return 0; } } } for(int i = 0;i < n;i++) { for(int j = 0;j < n;j++) { cout << a[i][j]; } } return 0; }