最大字段和实验报告
- 格式:doc
- 大小:119.00 KB
- 文档页数:14
数据库原理实验报告(3)实验三数据表的创建与管理实验南京晓庄学院《数据库原理与应用》课程实验报告实验三数据表的创建与管理实验所在院(系): 数学与信息技术学院班级:学号:姓名:1.实验目的(1) 理解SQL Server 20XX常用数据类型和表结构的设计方法。
理解主键、外键含义,掌握建立各表相关属性间参照关系的方法。
(2) 熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构。
插入及更新数据的方法。
(3) 熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方法。
2.实验要求基本实验:(1) 在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构:学生信息课程信息学习信息院系信息要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。
(2) 依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据库中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。
(3) 依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验使用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。
(4) 找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。
(5) 按要求完成实验报告。
扩展实验:(1) 在“TM”数据库中补充设计以下各表结构:教师信息授课信息班级信息专业信息图书信息(图书号,书名,作者,出版社,出版日期,册数,价格,分类) 借书偏息奖励信息(2) 设计并实现各表之间相关属性的参照关系。
(3) 使用SQL Management Studio图形界面或Transact-SQL在“TM”数据库中创建前述各表。
并插入部分数据,要求所插入数据合理有效。
3.实验步骤、结果和总结实验步骤/结果(1)合理命名并设计学生信息、课程信息、学习信息和院系信息结构,以表格描述相关信息。
第1篇一、实验背景随着大数据时代的到来,数据分析已成为各个行业提高效率、优化决策的重要手段。
本实验旨在通过实际案例分析,运用数据分析方法对某一特定数据集进行深入挖掘,并提出相应的优化策略。
本实验选取了一个典型的电商数据集,通过对用户行为数据的分析,旨在提高用户满意度、提升销售业绩。
二、实验目的1. 熟练掌握数据分析的基本流程和方法。
2. 深入挖掘用户行为数据,发现潜在问题和机会。
3. 提出针对性的优化策略,提升用户满意度和销售业绩。
三、实验内容1. 数据收集与预处理实验数据来源于某电商平台,包含用户购买行为、浏览记录、产品信息等数据。
首先,对数据进行清洗,去除缺失值、异常值,确保数据质量。
2. 数据探索与分析(1)用户画像分析通过对用户性别、年龄、地域、职业等人口统计学特征的统计分析,绘制用户画像,了解目标用户群体特征。
(2)用户行为分析分析用户浏览、购买、退货等行为,探究用户行为模式,挖掘用户需求。
(3)产品分析分析产品销量、评价、评分等数据,了解产品受欢迎程度,识别潜力产品。
3. 数据可视化运用图表、地图等可视化工具,将数据分析结果直观展示,便于理解。
四、实验结果与分析1. 用户画像分析通过分析,发现目标用户群体以年轻女性为主,集中在二线城市,职业以学生和白领为主。
2. 用户行为分析(1)浏览行为分析用户浏览产品主要集中在首页、分类页和搜索页,其中搜索页占比最高。
(2)购买行为分析用户购买产品主要集中在促销期间,购买产品类型以服饰、化妆品为主。
(3)退货行为分析退货率较高的产品主要集中在服饰类,主要原因是尺码不合适。
3. 产品分析(1)销量分析销量较高的产品主要集中在服饰、化妆品、家居用品等类别。
(2)评价分析用户对产品质量、服务、物流等方面的评价较好。
五、优化策略1. 提升用户体验(1)优化搜索功能,提高搜索准确度。
(2)针对用户浏览行为,推荐个性化产品。
(3)加强客服团队建设,提高用户满意度。
学生实验报告册(理工类)课程名称:大型数据库技术专业班级:12计算机科学与技术(1)学生学号:学生姓名:所属院部:计算机工程学院指导教师:陈爱萍2014——20 15学年第 2 学期金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。
若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。
纸张一律采用A4的纸张。
实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。
各院部可根据学科特点和实验具体要求增加项目。
填写注意事项(1)细致观察,及时、准确、如实记录。
(2)准确说明,层次清晰。
(3)尽量采用专用术语来说明事物。
(4)外文、符号、公式要准确,应使用统一规定的名词和符号。
(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。
实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。
实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。
实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。
实验项目名称:Oracle数据库安装与配置实验学时: 1 同组学生姓名:实验地点: 1316实验日期: 2015/3/27 实验成绩:批改教师:陈爱萍批改时间:实验1:Oracle数据库安装与配置一、实验目的和要求(1)掌握Oracle数据库服务器的安装与配置。
(2)了解如何检查安装后的数据库服务器产品,验证安装是否成功。
(3)掌握Oracle数据库服务器安装过程中出现的问题的解决方法。
(4)完成Oracle 11g数据库客户端网路服务名的配置。
(5)检查安装后的数据库服务器产品可用性。
(6)解决Oracle数据库服务器安装过程中出现的问题。
二、实验设备、环境设备:奔腾Ⅳ或奔腾Ⅳ以上计算机环境:WINDOWS 7、ORACLE 11g中文版三、实验步骤(1)从Oracle官方网站下载与操作系统匹配的Oracle 11g数据库服务器和客户机安装程序。
第1篇一、实验背景随着互联网技术的飞速发展,数据已经成为现代社会的重要资源。
大数据分析作为一种新兴的技术手段,通过对海量数据的挖掘和分析,为企业、政府和研究机构提供了决策支持。
本实验旨在通过实际操作,掌握大数据分析的基本流程和方法,提高对大数据技术的理解和应用能力。
二、实验目的1. 熟悉大数据分析的基本流程。
2. 掌握常用的数据预处理方法。
3. 熟悉大数据分析工具的使用。
4. 能够对实际数据进行有效的分析和解读。
三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:Python 3.74. 大数据分析工具:Pandas、NumPy、Matplotlib、Scikit-learn5. 云计算平台:阿里云四、实验内容(一)数据采集本实验选取某电商平台的用户购买数据作为分析对象,数据包含用户ID、购买时间、商品ID、商品类别、购买金额等字段。
(二)数据预处理1. 数据清洗:去除重复数据、处理缺失值、修正错误数据。
2. 数据转换:将时间戳转换为日期格式,对金额进行归一化处理。
3. 特征工程:提取用户购买行为特征,如购买频率、购买金额等。
(三)数据分析1. 用户画像:分析用户购买偏好、购买频率等特征。
2. 商品分析:分析商品销量、商品类别分布等特征。
3. 购买行为分析:分析用户购买时间分布、购买金额分布等特征。
(四)实验结果与分析1. 用户画像分析根据用户购买数据,我们可以得出以下结论:(1)年轻用户购买频率较高,偏好时尚、电子产品等商品。
(2)中年用户购买金额较高,偏好家居、家电等商品。
(3)老年用户购买频率较低,偏好健康、养生等商品。
2. 商品分析根据商品购买数据,我们可以得出以下结论:(1)电子产品销量最高,其次是家居、家电等商品。
(2)商品类别分布较为均匀,但电子产品、家居、家电等类别占比相对较高。
3. 购买行为分析根据购买时间、购买金额等数据,我们可以得出以下结论:(1)用户购买时间主要集中在上午10点到下午6点。
实验一使用EXCEL中辅助决策工具进行物流预测与企业经营决策分析一、实验目的:(1)通过本实验掌握物流预测与确定型决策的原理和工作步骤。
(2)熟练运用 Excel 对物流需求进行预测与企业经营决策分析。
(3)培养运用常用信息工具解决物流管理中遇到的实际问题的能力。
二、实验内容:表一列出了某物流配送中心过去 15 个月的产品出货量,要求用 Excel 对第16月出货量进行预测。
第一步:建立模型设d1+、d1-为目标 1 的偏差情况,依此类推,总时间方面,每提前1 钟奖励2元,延误1分钟则惩罚5元。
5d1+ -2d1- ;总费用方面,每降低1元成本奖励1元,超过1元则惩罚1元。
d2+-d2-;总质量方面,每提高一个质量等级奖励1元,降低一个质量等级则惩罚2元,-d3++2d3-;则根据案例分析可得目标函数为minZ=5d1+ -2d1- +d2+-d2--d3++2d3-那么这个约束条件包括质量约束、成本约束、时间约束以及平衡约束。
第二步,建立工作表,并输入相关数据,横向为集货、分货、拣货及配装四项,纵向包括一般时间、最小时间、成本、质量、单位成本、单位质量、质量权重、成本约束、质量约束,单位成本和单位质量未知,如何求得?单位成本=成本/一般时间单位质量=(质量-质量约束)/(一般时间-最小时间)横向填充即可得到每个环节的单位成本和单位质量。
建立规划模型,横向仍为集货、分货、拣货、配装及实现值五项,纵向为时间目标、成本目标、质量目标,集货环节的成本目标为其对应的时间目标与单位成本之积,其他环节依次类推,质量目标为其对应的时间目标与单位质量的乘积,其他环节依此类推。
时间目标的实现值为四个环节时间目标之和,成本目标实现值也是四个环节之和,质量目标的实现值为各环节质量权重与各环节质量目标的乘积之和。
建立规划模型,横向为目标值、正偏差、负偏差、平衡值、约束、目标值,总时间在 T= 100 分钟内,总费用限制在C=700元内,总质量要求达到Q=5,于是目标值下方的约束值分别为100、700、5,时间目标的平衡值为实现值-正偏差+负偏差,成本目标、质量目标依此类推。
一、实验目的本次实验旨在通过实际操作,深入了解字段属性的概念及其在数据库设计中的应用。
通过实验,掌握字段属性的定义、设置方法以及在数据管理和维护中的作用。
二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:MySQL Workbench三、实验内容1. 字段属性概述字段属性是指对数据库表中字段进行定义和设置的各种参数,如字段名、数据类型、长度、默认值、约束等。
字段属性对数据库的数据存储、查询、更新和维护等方面具有重要影响。
2. 实验步骤(1)创建数据库首先,在MySQL Workbench中创建一个名为“ExperimentDB”的数据库。
(2)创建表在“ExperimentDB”数据库中创建一个名为“Student”的表,包含以下字段:- 学号(id):INT类型,主键- 姓名(name):VARCHAR类型,长度为50- 性别(gender):CHAR类型,长度为1- 年龄(age):INT类型- 班级(class):VARCHAR类型,长度为30(3)设置字段属性① 设置学号字段属性将学号字段的长度设置为8,并设置为主键。
② 设置姓名字段属性将姓名字段的默认值设置为“未知”,并设置最大长度为50。
③ 设置性别字段属性将性别字段的默认值设置为“男”,并设置最大长度为1。
④ 设置年龄字段属性将年龄字段的约束设置为非空。
⑤ 设置班级字段属性将班级字段的约束设置为非空。
(4)查询和修改字段属性① 查询字段属性使用以下SQL语句查询“Student”表中所有字段的属性:```sqlDESCRIBE Student;```② 修改字段属性使用以下SQL语句修改“Student”表中年龄字段的约束为非空:```sqlALTER TABLE Student MODIFY age INT NOT NULL;```四、实验结果与分析1. 实验结果通过上述实验步骤,成功创建了“ExperimentDB”数据库和“Student”表,并设置了各字段的属性。
《数据库管理与开发》实验报告课程号:B0900990-0实验项目:数据库设计、创建,表及各种对象的创建、管理与应用(2)、全部选中之后然后点击“执行”,就会执行相应的语句,并在命令窗口显示“命令已经成功完成”。
如下图所示:(3)、然后刷新左边的数据库,就会出现我们所建立的OnlineShopping数据库。
(4)、然后找到E盘的OnlineShopping文件夹,点击进入之后就会看到包含我们所建立的数据文件和事务日志文件。
说明创建数据库成功。
2.在数据库中建表。
(1)、创建“客户表”。
(2)、创建“商品表”。
(3)、创建“生产厂商表”。
(4)、创建“商品类别表”。
(5)、创建“订单总表”。
(6)、创建“订单明细表”。
(7)、创建“供应表”。
注意这个表有点特殊的是:由两个属性共同的作为主键,要用CONSTRAIT 主键名PRIMARY KEY(属性A,属性B)(8)、创建“评论表”。
(9)、表全部创建完成之后,刷新数据库,可以看到这些表。
3、在数据库中创建索引。
说明:索引包含“唯一性索引”,“主键索引”,“聚集索引”。
因为生成的表的时候系统自动的为每一个表设置了“主键索引”如图所示,“聚集索引”是指表中的各记录的物理顺序与键值的逻辑顺序一致。
一张表中只能有一个“聚集索引”。
而系统中的这个主键索引也是聚集索引,所以不能再对表格创建聚集索引。
所以我下面创建的是唯一性索引,全部都是非聚集索引。
(1)、在“客户表”中创建了一个按“身份证号”列建立的唯一索引“Customer”。
说明:这里创建的是唯一索引,唯一索引的含义是对于表中的任何两行记录来说,索引键的值都各不相同。
并且要注意,如果表中一个字段或者多个字段的组合在多行记录中具有NULL值,则不能将这个字段或者字段组合作为唯一索引键。
因为对于每一个表的主键系统都自动的设置了相应的索引,在“客户表”中,身份证号是绝对不能相同的,所以可以设置为唯一索引键。
(2)、在“商品表”中创建了一个按“单价”列建立的非聚集索引“Goods”。
深圳大学实验报告课程名称:计算机基础实验名称:电子表格处理学院:建筑与城市规划学院专业:建筑学报告人:XXX学号:2015XXXX班级:XXXXXX同组人:指导教师:李炎然实验时间:2015.11.16实验报告提交时间:2015.11.22教务处制一.实验目的1.掌握工作表和工作簿的基本操作。
2.掌握公式和函数的使用方法。
3.掌握数据清单的管理方法。
4.掌握数据分析工具和VBA编程方法。
二.实验步骤与结果5.2实验环境1.硬件环境:微机2.软件环境:Windows8中文版,WPS表格20165.3实验内容1.Excel的基本操作⑴Excel工作窗口的组成执行“开始”菜单的“所有程序”/“WPS Office2016”/“WPS表格”命令(如图5-1所示),图5-1“开始”菜单或双击桌面上的“WPS 表格”快捷图标。
点击按钮打开菜单后单击“新建”新建空白表格文件,同时在该工作簿中新建了一个名为“sheet1”的空工作表,该工作表就是默认的当前工作表,如图5-2和图5-3所示。
(2)单元格的操作图5-2新建空工作表图5-3WPS 表格2016工作窗口①选择单元格选择一个单元格,直接单击相应的单元格即可。
若选择一行或一列单元格,将鼠标移动到相应行或列对应的数字或字母处,单击即可。
若选择多行或多列单元格,将鼠标移动到相应行或列对应的数字或字母处,然后拖动到适当的位置松开即可。
②清除单元格选择要清除的单元格,按Delete或单击右键选择“清除内容”命令即可,如图5-4所示。
图5-4快捷菜单③修改单元格内容双击需要修改内容的单元格,然后输入新的内容,单击Enter即可。
④插入单元格首先在要插入单元格的地方选择单元格,选择单元格的数目和即将要插入的单元格。
然后在选择的区域右击,选择“插入”命令,从弹出的对话框中选择要插入的方式。
⑤删除单元格首先在要删除单元格的地方选择单元格,选择单元格的数目和即将要删除的单元格。
实验报告实验⼀交换机及路由器的简单配置3.如果两个接头的线序发⽣同样的错误,⽹线还能⽤吗?会有什么后果?4. 完成交换机的以下配置,应是⽤什么命令?(1)由⽤户视图进⼊系统视图:(2)进⼊交换机的端⼝1:(3)显⽰交换机端⼝1的信息:5.写出交换机端⼝1的显⽰信息,并解释交换机端⼝0所显⽰信息的含义。
6、完成路由器的以下配置,应是⽤什么命令?(1)配置路由器的名称为R:(2)进⼊路由器的端⼝1:(3)设置端⼝1的IP地址和和⼦⽹掩码分别为192.168.5.1、255.255.255.248: (4)显⽰端⼝1的信息:7、写出路由器端⼝1的显⽰信息,并解释路由器端⼝1所显⽰信息的含义。
实验⼆简单组⽹2. 配置完路由器后,如何查看路由器的E0及E1的接⼝状态?将路由器的E0及E1的接⼝状态信息记录下来。
3. 如果把主机IP地址设成与路由器端⼝不同⽹段的IP地址,主机间能否互通?为什么?4. 如果公⽹端⼝E1的IP地址不包含在地址池中,但在⼀个⽹段,还能正常连通吗?5. 如果公⽹端⼝E1的IP地址和地址池中的地址不在⼀个⽹段,还能连通吗?6.写出可⽤于私有⽹络的三个保留⽹段。
7. 写出实验中所遇到的故障和解决办法,评论和建议。
实验三链路层协议分析注意:(1)因为在实验过程中,⽤Ethereal截获报⽂时,会得到⼀些交换机的刷新报⽂,这些报⽂与本次实验⽆关,不⽤填写在实验报告中去分析。
(以后的实验同理)1.找到发送消息的报⽂并进⾏分析,研究主窗⼝中的数据报⽂列表窗⼝和协议树窗⼝2. 在⽹络课程学习中,802.3和ETHERNETII规定了以太⽹MAC层的报⽂格式分为7字节的前导符,1字节的起始符,6字节的⽬的MAC地址,6字节的源MAC地址,2字节的类型、数据字段和4字节的数据校验字段。
对于选中的报⽂,缺少哪些字段,为什么?3. 在配置流镜像和端⼝镜像前,执⾏PA PING PC,在PB上运⾏Ethereal截获报⽂;在配置流镜像和端⼝镜像后,执⾏PA PING PC,再在PB上运⾏Ethereal截获报⽂;对⽐两次截获的报⽂,进⾏分析(要求)。
最大字段和1.实验目的和要求(1)深刻掌握动态规划法的设计思想并能熟练运用;(2)理解这样一个观点:同样的问题可以用不同的方法解决,一个好的算法是反复努力和重新修正的结果。
(3)分别用蛮力法、分治法和动态规划法设计最大子段和问题的算法;(4)比较不同算法的时间性能;(5)给出测试数据,写出程序文档2.实验内容给定由n 个整数组成的序列(a1, a2, …, an),求该序列形如的子段和的最大值,当所有整数均为负整数时,其最大子段和为0。
3.实验环境Turbo C 或VC++4.实验学时2学时,必做实验5.数据结构与算法数据结构: 程序中所用的数据都是储存在数组当中算法: 蛮力法函数MaxSum(int a[],int n,int &besti,int &bestj)分治法函数MaxSum(int a[],int left,int right)动态规划法函数 MaxSum(int n,int a[])6.核心源代码及时间性能分析(1)蛮力法:#include<iostream.h>int MaxSum(int a[],int n,int &besti,int &bestj){int sum=0;int i,j,k;for(i=1;i<=n;i++){int asum=0;for(j=i;j<=n;j++){asum+=a[j];∑=ji k k aif(asum>sum){sum=asum;besti=i;bestj=j;}}}return sum;}void main(){int n,a[cout<<"请输入各元素的值(一共"<100],m,i,j,maxsum; cout<<"请输入整数序列的元素个数n:"<<endl;cin>>n;<n<<"个):"<<endl;for(m=1;m<=n;m++)cin>>a[m];maxsum=MaxSum(a,n,i,j);cout<<"整数序列的最大子段和是:"<<maxsum<<endl;}时间性能:T(n)=O(n²)结果截图:(2)分治法:#include<iostream.h>int MaxSum(int a[],int left,int right){int sum=0;if (left==right){if (a[left]>0)sum=a[left];elsesum=0;}else{int center=(left+right)/2;int leftsum=MaxSum(a,left,center);int rightsum=MaxSum(a,center+1,right);int s1=0;int lefts=0;for(int i=center;i>=left;i--){lefts+=a[i];if(lefts>s1)s1=lefts;}int s2=0;int rights=0;for(int j=center+1;j<=right;j++){rights+=a[j];if(rights>s2)s2=rights;}sum=s1+s2;if(sum<leftsum)sum=leftsum;if(sum<rightsum)sum=rightsum;}return sum;}void main(){int n,a[100],m,maxsum;cout<<"请输入整数序列的元素个数n:"<<endl;cin>>n;cout<<"请输入各元素的值(一共"<<n<<"个):"<<endl;for(m=1;m<=n;m++)cin>>a[m];maxsum=MaxSum(a,1,n);cout<<"整数序列的最大子段和是:"<<maxsum<<endl; }时间性能:T(n)=O(nlog2(n))结果截图:(3)动态规划法:#include<iostream.h>void MaxSum(int n,int a[]){int sum=0;int b=0;for(int i=1;i<=n;i++){if(b>0)b+=a[i];elseb=a[i];if(b>sum)sum=b;}cout<<"整数序列的最大子段和是:"<<sum<<endl; }void main(){int n,a[100],m,maxsum;cout<<"请输入整数序列的元素个数n:"<<endl;cin>>n;cout<<"请输入各元素的值(一共"<<n<<"个):"<<endl;for(m=1;m<=n;m++)cin>>a[m];MaxSum(n,a);}时间性能:T(n)=O(n)结果截图:背包问题1.实验题目:分别用贪心法法和分支限界法求解背包问题2. 实验内容:0-1背包问题:给定n种物品和一个背包。
物品i的重量是Wi,其价值为Vi,背包的容量为C。
应如何选择装入背包的物品,使得装入背包中物品的总价值最大?在选择装入背包的物品时,对每种物品i只有2种选择,即装入背包或不装入背包。
不能将物品i装入背包多次,也不能只装入部分的物品i。
3.实验源程序:(1)贪心法:#include <iostream.h>struct goodinfo{float p; //物品效益float w; //物品重量float X; //物品该放的数量int flag; //物品编号};//物品信息结构体void Insertionsort(goodinfo goods[],int n){int j,i;for(j=2;j<=n;j++){goods[0]=goods[j];i=j-1;while (goods[0].p>goods[i].p){goods[i+1]=goods[i];i--;}goods[i+1]=goods[0];}}//按物品效益,重量比值做升序排列void bag(goodinfo goods[],float M,int n){float cu;int i,j;for(i=1;i<=n;i++)goods[i].X=0;cu=M; //背包剩余容量for(i=1;i<n;i++){if(goods[i].w>cu)//当该物品重量大与剩余容量跳出break;goods[i].X=1;cu=cu-goods[i].w;//确定背包新的剩余容量}if(i<=n)goods[i].X=cu/goods[i].w;//该物品所要放的量/*按物品编号做降序排列*/for(j=2;j<=n;j++){goods[0]=goods[j];i=j-1;while (goods[0].flag<goods[i].flag){goods[i+1]=goods[i];i--;}goods[i+1]=goods[0];}cout<<"最优解为:"<<endl;for(i=1;i<=n;i++){cout<<"第"<<i<<"件物品要放:";cout<<goods[i].X<<endl;}}void main(){cout<<"|--------运用贪心法解背包问题---------|"<<endl; cout<<"|---power by 李奇蓬---|"<<endl;cout<<"|-------------------------------------|"<<endl;int j;int n;float M;goodinfo *goods;//定义一个指针while(j){cout<<"请输入物品的总数量:";cin>>n;goods=new struct goodinfo [n+1];//cout<<"请输入背包的最大容量:";cin>>M;cout<<endl;int i;for(i=1;i<=n;i++){ goods[i].flag=i;cout<<"请输入第"<<i<<"件物品的重量:";cin>>goods[i].w;cout<<"请输入第"<<i<<"件物品的效益:";cin>>goods[i].p;goods[i].p=goods[i].p/goods[i].w;//得出物品的效益,重量比cout<<endl;}Insertionsort(goods,n);bag(goods,M,n);cout<<"press <1> to run agian"<<endl;cout<<"press <0> to exit"<<endl;cin>>j;}}结果截图:(2)分支限界法:#include <stdio.h>#include<malloc.h>#define MaxSize 100 //最多结点数typedef struct QNode{float weight;float value;int ceng;struct QNode *parent;bool leftChild;}QNode,*qnode; //存放每个结点typedef struct{qnode Q[MaxSize];int front,rear;}SqQueue; //存放结点的队列SqQueue sq;float bestv=0; //最优解int n=0; //实际物品数float w[MaxSize]; //物品的重量float v[MaxSize]; //物品的价值int bestx[MaxSize]; // 存放最优解qnode bestE;void InitQueue(SqQueue &sq ) //队列初始化{sq.front=1;sq.rear=1;}bool QueueEmpty(SqQueue sq) //队列是否为空{if(sq.front==sq.rear)return true;elsereturn false;}void EnQueue(SqQueue &sq,qnode b)//入队{if(sq.front==(sq.rear+1)%MaxSize){printf("队列已满!");return ;}sq.Q[sq.rear]=b;sq.rear=(sq.rear+1)%MaxSize;}qnode DeQueue(SqQueue &sq)//出队{qnode e;if(sq.front==sq.rear){printf("队列已空!");return 0;}e=sq.Q[sq.front];sq.front=(sq.front+1)%MaxSize;return e;}void EnQueue1(float wt,float vt, int i ,QNode *parent, bool leftchild) {qnode b;if (i==n) //可行叶子结点{if (vt==bestv){bestE=parent;bestx[n]=(leftchild)?1:0;}return;}b=(qnode)malloc(sizeof(QNode)); //非叶子结点b->weight=wt;b->value=vt;b->ceng=i;b->parent=parent;b->leftChild=leftchild;EnQueue(sq,b);}void maxLoading(float w[],float v[],int c){float wt=0;float vt=0;int i=1; //当前的扩展结点所在的层float ew=0; //扩展节点所相应的当前载重量float ev=0; //扩展结点所相应的价值qnode e=NULL;qnode t=NULL;InitQueue(sq);EnQueue(sq,t); //空标志进队列while (!QueueEmpty(sq)){wt=ew+w[i];vt=ev+v[i];if (wt <= c){if(vt>bestv)bestv=vt;EnQueue1(wt,vt,i,e,true); // 左儿子结点进队列}EnQueue1(ew,ev,i,e,false); //右儿子总是可行;e=DeQueue(sq); // 取下一扩展结点if (e == NULL){if (QueueEmpty(sq)) break;EnQueue(sq,NULL); // 同层结点尾部标志e=DeQueue(sq); // 取下一扩展结点i++;}ew=e->weight; //更新当前扩展结点的值ev=e->value;}printf("最优取法为:\n");for( int j=n-1;j>0;j--) //构造最优解{bestx[j]=(bestE->leftChild?1:0);bestE=bestE->parent;}for(int k=1;k<=n;k++){if(bestx[k]==1)printf("\n物品%d:重量:%.1f,价值:%.1f\n",k,w[k],v[k]);}printf("\n");printf("最优价值为:%.1f\n\n",bestv);}void main(){int c;float ewv[MaxSize];printf(" //////////////////// 0-1背包问题分枝限界法/////////////////////\n\n");printf("请输入物品的数量:\n");scanf("%d",&n);printf("请输入背包的最大承重量:\n");scanf("%d",&c);printf("\n请输入物品的重量和单位重量价值:\n\n");for(int i=1;i<=n;i++){printf("物品%d:",i);scanf("%f%f",&w[i],&ewv[i]);v[i]=w[i]*ewv[i];printf("\n");}maxLoading(w, v, c);}结果截图:。