概述
解决回溯问题的方法:
(1)针对所给问题,定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先的方式搜索解空间;
(4)回溯法搜遍整个解空间,最后得到最优解。
N皇后问题
#include<math.h>
int n,m=1;
int a[1024]={0};
int check(int a[],int n)
{
for(int i=1;i<n;i++)
{
if(abs(a[i]-a[n])==abs(i-n) || a[i]==a[n])//见下面注释
return 0;
}
return 1;
}
int fun(int i){
int j,k;
for(j=1;j<=n;j++)
{
a[i]=j;
if(check(a,i))
{
if(i<n)
fun(i+1);
else
{
printf("第%d个排列方法:n",m);
for(k=1;k<=n;k++)
{
printf("第%d个皇后的位置:%dn",k,a[k]);
}
printf("n");
m++;
}
}
}
}
int main(){
printf("请输入皇后数:n");
scanf("%d",&n);
fun(1);
}
最后
以上就是落后黑裤为你收集整理的回溯算法(一点点)的全部内容,希望文章能够帮你解决回溯算法(一点点)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复