【回溯】n皇后问题
时间限制: 1 Sec 内存限制: 128 MB提交: 8 解决: 7
[提交][状态][讨论版]
题目描述
在一个国际象棋棋盘上,放置n个皇后(n<10),使她们相互之间不能进攻。求出所有布局。
输入
一个整数n(0<n<10)
输出
每行输出一种方案,每种方案顺序输出皇后所在的列号,各个数之间用空格分隔。
样例输入
4
样例输出
2 4 1 3
3 1 4 2

#include <iostream> using namespace std; int a[10]={0},n; void dg(int i) { if(i>n) { for(int i=1;i<=n;i++) cout<<" "<<a[i]; cout<<endl; } else { for(int j=1;j<=n;j++) { int tag=1; for(int k=1;k<i;k++) { if(j==a[k]+i-k||j==a[k]||j==a[k]-i+k) { tag=0; break; } } if(tag) { a[i]=j; dg(i+1); } } } } int main() { cin>>n; dg(1); return 0; }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步