回溯问题二:八皇后问题

程序设计五大思想之一,回溯。接下来两天要用回溯解决以下问题:
(1)八皇后问题
(2)0-1背包问题
(3)旅行售货员问题
(4)装载问题
(5)迷宫问题
(6)图的m着色问题
(7)排列组合问题

问题一:八皇后问题
在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法?有趣的是,数学家高斯认为有96种方案,象棋高手认为有40种方案,计算机学家解出92种方案。本篇用C语言解出92种解:

程序设计思路:
把位置定义成结构体,c[i].x表示行,c[i].x表示列,i从第0行开始,每一行因为要找一个皇后,故要找八次,也就是八次函数递归。每一行都从列0开始找,0到第8列依次找,找到了保存在c[i]进入下一行找,此时递归find_que(i+1);每一行找到了不代表这行就不找其他的了,还要找其他的,因为方案有很多种,这里体现回溯思想

#include <stdio.h>
typedef struct//每个位置定义成一个结构体类型,该位置由行x列y组成
{
   
    int x;
    int y;
} Location;
int cheak(int i,Location c[])
{
   
    int j;
    for(j=0; j<c[i].x; j
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值