付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖州师范学院实验报告课程名称:算法实验四:回溯算法一、实验目的1、理解回溯算法的概念,掌握回溯算法的基本要素。2、掌握设计回溯算法的一般步骤,针对具体问题,能应用回溯算法 求解。二、实验内容1、问题描述1) n后问题在nx储的棋盘上放置彼此不受攻击的 n个皇后。按照国际象棋 的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n后问题等价于在nXrB的棋盘上放置n个皇后,任彳2个皇后不放 在同一行或同一列或同一斜线上。2) 0-1背包问题需对容量为c的背包进行装载。从 n个物品中选取装入背包的 物品,每件物品i的重量为wi ,价值为pi。对于可行的背包装载, 背包中物品的总重量不能
2、超过背包的容量, 最佳装载是指所装入的物 品价值最高。每种物品要么放进背包,要么丢弃。2、数据输入:文件输入或键盘输入。3、要求:1)完成上述两个问题,时间为 2次课。2)独立完成实验及实验报告三、实验步骤1、理解方法思想和问题要求。2、采用编程语言实现题目要求。3、上机输入和调试自己所写的程序。4、附程序主要代码:1 .n后问题:#include<iostream>using namespace std;class Queen friend int nQueen(int);private:bool Place(int k);void Backtrack(int t);int n,
3、*x;long sum;bool Queen:Place(int k) for (int j = 1; j < k; j+)if (abs(k - j) = abs(xj - xk) | (xj = xk) return false;return true;void Queen:Backtrack(int t) if (t > n) for (int i = 1; i <= n; i+)cout << xi << ""cout << endl;sum+;)else for (int i = 1; i <= n; i
4、+) xt = i;if (Place(t) Backtrack(t + 1);)int nQueen(int n) Queen X;/初始化XX.n = n;X.sum = 0;int* p = new intn + 1;for (int i = 0; i <= n; i+)Pi = 0;X.x = p;X.Backtrack(l);delete p;return X.sum;void main() int n, set;cout <<呼青输入皇后个数:"cin >> n;cout <<,可行方案所有解:"<< end
5、l;set = nQueen(n);cout << '可行方案数:"<< set << endl;2.0-1背包:#include <stdio.h>#include <conio.h>int n;物品数量double c; 背包容量double v100;/ 各个物品的价值double w100;/ 各个物品的重量double cw = 0.0;/ 当前背包重量double cp = 0.0;/当前背包中物品价值double bestp = 0.0;/当前最优价值double perp100;/单位物品价值排序后i
6、nt order100;/ 物品编号int put100;/设置是否装入/按单位价值排序void knapsack()(int i,j;int temporder = 0;double temp = 0.0;for(i=1;i<=n;i+)perpi=vi/wi;for(i=1;i<=n-1;i+)(for(j=i+1;j<=n;j+)if(perpi<perpj) perp,order口,sortv口,sortw口 (temp = perpi; perpi=perpi; perpj=temp;temporder=orderi; orderi=orderj; order
7、j=temporder;temp = vi;vi=vj;vj=temp;temp=wi;wi=wj;wj=temp;/回溯函数void backtrack(int i)(double bound(int i);if(i>n)(bestp = cp;return;if(cw+wi<=c)(cw+=wi;cp+=vi;puti=1;backtrack(i+1);cw-=wi;cp-=vi;)if(bound(i+1)>bestp)/ 符合条件搜索右子数 backtrack(i+1);)/计算上界函数double bound(int i)double leftw= c-cw;dou
8、ble b = cp;while(i<=n&&wi<=leftw)leftw-=wi;b+=vi;i+;)if(i<=n) b+=vi/wi*leftw;return b;)int main()int i;printf("请输入物品的数量和容量:");scanf("%d %lf",&n,&c);printf("请输入物品的重量和价值:");for(i=1;i<=n;i+)printf("第物品的重量:",i);scanf("%lf",&am
9、p;wi);printf("价值是:");scanf("%lf",&vi);orderi=i;)knapsack();backtrack(1);printf("最有价值为:lfn",bestp);printf("需要装入的物品编号是:");for(i=1;i<=n;i+)(if(puti=1)printf("%d ",orderi);)return 0;)5、实验结果:四、实验分析1、: n后问题分析只要不要在同一直线和斜线上就行。bool Queen:Place(int k) for (int j = 1; j < k; j+)if (abs(k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肝硬化患者的药物治疗与护理
- 江西省宜春市丰城市重点达标名校2026届初三物理试题第二次检测试题文含解析
- 湖北省襄阳市南漳县2025-2026学年初三(二模)物理试题试卷含解析
- 浙江省宁波市东钱湖九校2026年初三下学期七校联考期中考试数学试题含解析
- 辽宁省沈阳市大东区达标名校2026年初三下学期第一次联考(2月)物理试题含解析
- 河北省廊坊市三河市达标名校2025-2026学年初三中考模拟冲刺卷(提优卷)(一)物理试题含解析
- 河北省廊坊市重点达标名校2025-2026学年初三中考冲刺第一次考试物理试题含解析
- 北京市密云县市级名校2026届第二学期第一次阶段性考试初三数学试题含解析
- 山东省菏泽市巨野县2026届初三下学期期中数学试题文试卷含解析
- 胸科术后呼吸机撤离护理
- 2026时事政治必考试题库含答案
- 2026届高考政治一轮复习:统编版必修1~4+选择性必修1~3全7册必背考点提纲汇编
- 2025年组织生活会个人发言提纲存在问题及具体整改措施
- DL∕T 1616-2016 火力发电机组性能试验导则
- 诺瓦星云在线测评题库
- 通用电子嘉宾礼薄
- 超轻粘土备课
- 机器人控制技术与实践 课程标准-教学大纲
- 桑树坪煤矿12 Mta新井设计
- 安全生产考试中心工作制度
- 医院引进新药申请表
评论
0/150
提交评论