2 条题解
-
3
** 求为什么比普通做法快(指最大数据330ms+)
#include<bits/stdc++.h> using namespace std; bool ans[15][15]; bool line[15]; int num=0; int n; bool check(int a,int b) { for(int i=1;i<a;i++) { if(b-i>=1) if(ans[a-i][b-i]==1) return 0; if(b+i<=n) if(ans[a-i][b+i]==1) return 0; } return 1; } void dfs(int now) { if(now==n+1) { num++; if(num<=3) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(ans[i][j]==1)cout<<j<<' '; cout<<"\n"; } return; } for(int i=1;i<=n;i++) { if(line[i]==0&&check(now,i)==1) { line[i]=1; ans[now][i]=1; dfs(now+1); line[i]=0; ans[now][i]=0; } } } int main() { cin>>n; dfs(1); cout<<num; return 0; }
信息
- ID
- 944
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 39
- 已通过
- 21
- 上传者