- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
分治算法,贪心算法,动态规划,回溯法
实 验 报 告
实验一
实验名称:
分治和动态规划算法实现
实验学时:4
实验内容和目的:
希望通过本次试验,加深对分治算法原理及实现过程的理解
(1) 二分法求方程近似解:求方程f(x) = x^3 + x^2 - 1 = 0在[0,1]上的近似解,精确度为0.01。
(2) 给定一个顺序表,编写一个求出其最大值和最小值的分治算法
由于顺序表的结构没有给出,作为演示分治法这里从简顺序表取一整形数组数组大小由用户定义,数据随机生成。我们知道如果数组大小为 1 则可以直接给出结果,如果大小为 2则一次比较即可得出结果,于是我们找到求解该问题的子问题即: 数组大小 = 2。到此我们就可以进行分治运算了,只要求解的问题数组长度比 2 大就继续分治,否则求解子问题的解并更新全局解以下是代码。
实验原理:
分治算法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归的解这些子问题,然后将各子问题的解合并到原问题的解。
在递归算法中,原问题和子问题的区别关键在于尺寸的不同,实际上解决的是同样的问题,对于分解了的子问题分别求解,也可以在此分割,如此递归下去。最后,自底向上逐步求出原问题的解。
实验器材(设备、元器件)
硬件环境:i5-2450M双核处理器,2.5GHz,NVIDIA GT630M独立显卡芯片,1GB独立显存,2GB DDR3内存,500GB硬盘空间
软件环境:Windows 7操作系统及以上,Microsoft Visual Studio 2010
实验步骤:
给定一个顺序表,编写一个求出其最大值和最小值的分治算法
/*
给定一个顺序表编写一个求出其最大值和最小值的分治算法
*/
#include stdafx.h
#include stdio.h
#include string.h
#include math.h
#include stdlib.h
#define Len 1000000
#define MIN(a,b)((a)(b)?(b):(a))
#define MAX(a,b)((a)(b)?(a):(b))
int a[Len] , n ;
int GetMin(int l,int r){
if (l==r) return a[l] ;
int mid = (l+r)1 ;
return MIN(GetMin(l,mid) , GetMin(mid+1,r)) ;
}
int GetMax(int l,int r){
if (l==r) return a[l] ;
int mid = (l+r)1 ;
return MAX(GetMax(l,mid) , GetMax(mid+1,r)) ;
}
int main()
{
int i ;
printf(请输入您顺序表中元素的个数:);
scanf(%d,n);printf(请依次输入您顺序表中的元素:);
for (i = 0 ; i n ; i++)
scanf(%d,a[i]);
printf(MinValue = %d\n,GetMin(0,n-1)) ;
printf(MaxValue = %d\n,GetMax(0,n-1)) ;
system(pause);
}
二分法求方程近似解:求方程f(x) = x^3 + x^2 - 1 = 0在[0,1]上的近似解,精确度为0.01。
实验源程序如下:
/*
二分法求方程近¨似解求方程f(x) = x^3 + x^2 - 1 = 0在[0,1]上的近似解精确度为0.01。
*/
#include stdafx.h
#include stdio.h
#include string.h
#include math.h
#include stdlib.h
double function(double x){
return x*x*x + x*x - 1 ;
}
int main()
{
double l = 0 , r = 1.0 , mid ;
while (r-l0.01){
mid = (r+l)/2 ;
if (function(mid)=0)
r = mid ;
else
l = mid ;
}
double ans = r ;
printf(%.2f\n,ans);
您可能关注的文档
- OA系统的培训.ppt
- permission PFMEA课程简介什麼是失效什麼是` R`16.ppt
- 中小学体育课程标准.doc
- 全球变暖背景下的极端天气气候变化.ppt
- 关于中国餐饮行业的研究报告.doc
- 关于举办高等职业院校青年骨干教师双师教学能力培训班.doc
- 关于产品物料数量的管控制度.doc
- 关于人际交往中面部表情的研究.doc
- 关于代客泊车服务提升的报告及实施细则.docx
- 关于价值观.ppt
- 专业学位硕士研究生培养模式的研究与实践.pdf
- 【人教版】数学四年级上学期期末考试题有答案解析.pdf
- 三年级下册数学一课一练工作效率工作时间和工作总量浙教版.pdf
- [2020年好评]西双版纳傣族自治州卫生部门招聘医疗卫生专业技术类人员.pdf
- SREBP-1介导血管内皮细胞LRP1表达下调对糖尿病认知功能的影响研究.pdf
- 一年级《aoe》说课稿.pdf
- 一年级上册语文园地二教案模板5篇.pdf
- XXXX贵州省生源地信用助学贷款网络答题试题及答案(方便.pdf
- 【必威体育精装版北京课改版精选】北京课改初中数学七上《3.11用计算机绘图》word.pdf
- 【5套打包】太原市小学六年级数学上期末考试测试卷(含答案解析).pdf
文档评论(0)