1 / 6
文档名称:

实验报告4回溯算法.docx

格式:docx   大小:88KB   页数:6页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验报告4回溯算法.docx

上传人:63229029 2017/6/1 文件大小:88 KB

下载得到文件列表

实验报告4回溯算法.docx

文档介绍

文档介绍:算法设计与分析实验报告实验名称_____ 回溯算法_____ 学院________ 数学与计算机学院____ 班级_______ 信科 00000 ___________ 学号_______ 6666666666 __________ 姓名_____ 000000 ________________ 2016 年月日学号姓名实验日期实验名称回溯算法【实验目的】理解回溯算法的思想,能灵活利用回溯算法解决实际计算问题。【实验内容】参考源码 3mColoring .cpp, 6TSP .cpp ,理解回溯算法对解空间的组织和收索; 6TSP .cpp 算法进一步理解回溯算法的思想及代码框架结构; 。【实验原理】(含相关算法流程图,可写多页) //算 24 点问题输入只有一行,四个 1到9 之间的自然数。输出如果有解的话,只要输出一个解,输出的是三行数据,分别表示运算的步骤。其中第一行是输入的两个数和一个运算符和运算后的结果,第二行是第一行的结果和一个输入的数据、运算符、运算后的结果; 第三行是第二行的结果和输入的一个数、运算符和“=24 ”。如果两个操作数有大小的话则先输出大的。编程: #include <iostream> #include <cstdio> #include <cstdlib> #include <cstring> #include <queue> #include <algorithm> using namespace std; bool flag; int num[4]; struct node { int a,b,sum;//sum 存放 a,b 经过 oper 运算之后的值 char oper; }; void dfs(int cur,int a,int b,queue <node> route) { if(flag) return ; if(cur==3)// 计算收尾{ if(((a+b)==24)||((a-b)==24)||((a*b)==24)||(b!=0&&a%b==0&&a/b==24)){// 如果经过上面的计算得到解 while(!()){ node now=(); printf("%d%c%d=%d\n",,,,);// 依次输出前面的计算过程 (); } if((a+b)==24){ if(b>a) swap(a,b); printf("%d+%d=%d\n",a,b,a+b); } if((a-b)==24) printf("%d-%d=%d\n",a,b,a-b); if((a*b)==24) { if(b>a) swap(a,b); printf("%d*%d=%d\n",a,b,a*b); } if(a%b==0&&b!=0&&(a/b)==24) printf("%d/%d=%d\n",a,b,a/b);//a/b 比较特殊,要求结果必须是整数 flag=true;// 表示找到解,一旦找到任何一个解就退出} return ;} queue <node> temp=route; node x; =a,