我是靠谱客的博主 落后黑裤,最近开发中收集的这篇文章主要介绍回溯算法(一点点),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

解决回溯问题的方法:
(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);
}

最后

以上就是落后黑裤为你收集整理的回溯算法(一点点)的全部内容,希望文章能够帮你解决回溯算法(一点点)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(74)

评论列表共有 0 条评论

立即
投稿
返回
顶部