回溯法实现N皇后问题
#include<iostream>
#define N 5
using namespace std;
//回溯法实现N皇后问题
void place(int* x,int n){
for(int i=1;i<N;++i){
int ifPlace=1;
for(int j=1;j<N;++j)
if(x[j]==i||((n-j==i-x[j]||n-j==x[j]-i)&&x[j]!=0)){
ifPlace=0;
break;
}
if(ifPlace){
x[n]=i;
if(n==N-1){
cout<<"找到一个解:"<<endl;
for(int i=1;i<N;++i)cout<<"第"<<i<<"行,第"<<x[i]<<"列"<<endl;
return;
}else place(x,n+1);
}
}
x[n-1]=0;
}
int main(){
int x[N];
for(int i=0;i<N;++i)x[i]=0;
place(x,1);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律