回溯法__算法实验报告.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
回溯法__算法实验报告

实 验 报 告课程名称 算法分析与设计 实验名称 回溯法 实验时间 2015 年 5 月 28 日 指导单位 计算机学院软件工程系 指导教师 张怡婷学生姓名 王珣 班级学号 B1 学院(系) 计算机学院、软件学院 专 业 计算机科学与技术实 验 报 告 实验名称 回溯法 指导教师 张怡婷 实验类型 验证 实验学时 2 实验时间 2015-5-28 实验目的和任务学习编程实现深度优先有哪些信誉好的足球投注网站状态空间树求解实际问题的方法,着重体会求解第一个可行解和求解所有可行解之间的差别。加深理解回溯法通过有哪些信誉好的足球投注网站状态空间树、同时用约束函数剪去不含答案状态子树的算法思想,会用蒙特卡罗方法估计算法实际生成的状态空间树的结点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皇后问题的所有可行解。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 #include iostreamusing namespace std;char str[] = abc; const int size = 3;void constructCandidate(char *input, int inputSize, int index, char *states, char *candidates, int *ncandidates) { ?if (input == NULL || inputSize = 0 || index 0 || candidates == NULL || ncandidates == NULL) ?return;bool buff[256]; ?for (int i = 0; i 256; i++) ?buff[i] = false; ?int count = 0; ?for (int i = 0; i index; i++) ?{ ?buff[states[i]] = true; ?} ?for (int i = 0; i inputSize; i++) ?{ ?if (buff[input[i]] == false)candidates[count++] = input[i]; ?} ?*ncandidates = count; ?return; }bool isSolution(int index, int inputSize) { ?if (index == inputSize) ?return true; ?else ?return false; }void processSolution(char *input, int inputSize) { ?if (input == NULL || inputSize = 0) ?return;for (int i = 0; i inputSize; i++) ?cout input[i]; ?cout endl; }void backTack(char *input, int inputSize, int index, char *states, int stateSize) { ?if (input == NULL || inputSize = 0 || index 0 || states

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档