回溯法程序:
#include<iostream.h>
#include<string.h>
#include<time.h>
#define size 100
int board[size];
int ver[size];
int ru[size*2];//右上
int rd[size*2];//右下
int n,find; int rec[size];
//回溯搜索
void dfs(int t)
{
int i;
if(find) return;
if(t==n)
{
find=1;
for(i=0;i<n;i++)
{
rec[i]=board[i];
}
return;
}
for(i=0;i<n;i++)
{
if(ver[i]==1) continue;
if(ru[i-t+n]==1) continue;
if(rd[i+t]==1) continue;
ver[i]=1;
ru[i-t+n]=1;
rd[i+t]=1;
board[t]=i;
dfs(t+1);
rd[i+t]=0;
ru[i-t+n]=0;
ver[i]=0;
}
return;
}
int main()
{
int i,j,t1,t2;
cout<<"输入棋盘大小:";
cin>>n;
t1&
C语言编程 N皇后问题求解
最新推荐文章于 2024-05-17 20:22:06 发布
本文通过C语言使用回溯法解决N皇后问题。程序包括回溯搜索算法和主函数,用户输入棋盘大小,程序输出所有解决方案或提示无法找到解。对于C语言初学者,可能需要对代码进行详细解释。
摘要由CSDN通过智能技术生成