1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int dx[8]={-2,-2,-1,1,2,2,1,-1}; int dy[8]={-1,1,2,2,1,-1,-2,-2}; int n,a[12][12]; bool bk; void dfs(int x,int y,int k) { if(bk) return ; if(k==n*n) { for(int i=1;i<=n;i++) { for(int j=1;j<n;j++) printf("%d ",a[i][j]); printf("%d\n",a[i][n]); } bk=true; } else { for(int i=0;i<8;i++) { int xx,yy; xx=x+dx[i];yy=y+dy[i]; if(xx>=1 && xx<=n && yy>=1 && yy<=n &&a[xx][yy]==0) { a[xx][yy]=k+1; dfs(xx,yy,k+1); a[xx][yy]=0; } } } } int main() { scanf("%d",&n); memset(a,0,sizeof(a)); a[1][1]=1;bk=false; dfs(1,1,1); if( !bk) printf("-1\n"); return 0; }
- 1
信息
- ID
- 80
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 175
- 已通过
- 46
- 上传者