3 条题解
-
0麦嘉峻 (maijiajun) LV 10 @ 2023-1-5 15:54:02
#include<bits/stdc++.h> using namespace std; int n,tot,b[15],c[30],d[30],a[15]; void dfs(int k) { if(k>n) { tot++; return; } for(int i=1;i<=n;i++) { if(!b[i]&&!c[k+i]&&!d[k-i+n]) { a[k]=i; b[i]=1; c[k+i]=1; d[k-i+n]=1; dfs(k+1); b[i]=0; c[k+i]=0; d[k-i+n]=0; } } } int main() { cin>>n; dfs(1); cout<<tot; return 0; }
-
-12023-12-3 16:15:09@
#include<bits/stdc++.h> using namespace std; int a[100001],que[100001][3]; int main() { int n,k,head,tail,xx,t; cin>>n>>k; if(n==k) { cout<<0<<endl; return 0; } head=0; tail=1; que[1][0]=n; que[1][1]=0; a[n]=1; while(head<tail) { head++; xx=que[head][0]; for(int i=1;i<=3;i++) { if(i==1) t=xx+1; if(i==2) t=xx-1; if(i==3) t=2*xx; if(t>=0 && t<=100000&&a[t]==0) { tail++; que[tail][0]=t; que[tail][1]=que[head][1]+1; a[t]=1; if(t==k) { cout<<que[tail][1]; return 0; } } } } return 0; }
-
-12023-8-25 17:55:33@
#include <iostream> using namespace std; const int maxn=1e4; int n; bool vis_c[maxn],vis_r[maxn],vis_l[maxn]; char a[maxn][maxn]; int id=0; void dfs(int i){ if(i==n+1){ id++; } for(int j=1;j<=n;j++){ if(!vis_c[j]&&!vis_r[i-j+n]&&!vis_l[i+j-1]){ vis_c[j]=vis_r[i-j+n]=vis_l[i+j-1]=1; a[i][j]=1; dfs(i+1); vis_c[j]=vis_r[i-j+n]=vis_l[i+j-1]=0; a[i][j]=0; } } } int main(){ cin>>n; dfs(1); cout<<id; return 0; }
- 1
信息
- ID
- 1637
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 205
- 已通过
- 79
- 上传者