算法分析与设计实验三 回溯法 24点问题 n皇后问题

实验目的
学习编程实现深度优先搜索状态空间树求解实际问题的方法, 着重体会求解第一个可行解和求解所有可行解之间的差别。 加深理解回溯法通过搜索状态空间树、同时用约束函数剪去不含答案状态子树的算法思想, 会用蒙特卡罗方法估计算法实际生成的状态空间树的结点
数。

实验内容
1、 求 24 点问题
给定四个 1-9 之间的自然数, 其中每个数字只能使用一次,用算术运算符+,-,*,/构造出一个表达式,将这 4 个正整数连接起来(可以使用括号),使最终的得数为 24。 要求根据问题的特征设计具体算法并编程实现, 输入数据为 4 个自然数。输出若有多个满足要求的表达式, 则只输出其中一组; 若搜索失败, 则输出“ Fail!”。
【示例】 采用一个表达式中用括号确定运算先后次序的方式,如:
输入 1, 5, 5, 5 四个自然数,输出((5-(1/5))*5)。
输入 3, 3, 8, 8 四个自然数,输出(8/(3-(8/3)))。
【测试数据】
(1) 1,5,5,5 (2) 3,3,8,8 (3) 3,8,8,8 (4) 1,2,3,4 (5) 2,4,5,6
(6) 4,2,2,5 (7) 1,2,2,6 (8) 4,2,8,8 (9) 0,3,8,8
2、 n 皇后问题
要求用回溯法求解 8-皇后问题, 使放置在 8*8 棋盘上的 8 个皇后彼此不受攻击, 即:任何两个皇后都不在同一行、 同一列或同一斜线上。 请输出 8 皇后问题的所有可行解。

24点程序:

/*   Function : 求解24点问题,回溯,dfs。
 *   Name     : 24点.cpp
 *   Author   : wyh7280
 *   Time     : 2015.05.20 17:15:00.000
 *   Update   : 2015.05.25 12:10:00.000
 */
#include <iostream>
#include <string>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <ctype.h>
using namespace std;
//宏定义
const double PRECI
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值