分治法实验报告Word文件下载.doc
- 文档编号:13942475
- 上传时间:2022-10-15
- 格式:DOC
- 页数:7
- 大小:27.51KB
分治法实验报告Word文件下载.doc
《分治法实验报告Word文件下载.doc》由会员分享,可在线阅读,更多相关《分治法实验报告Word文件下载.doc(7页珍藏版)》请在冰豆网上搜索。
lt;
iostream.h&
gt;
intweishu(intx)
{
inti;
while(x!
=0)
x=x/10;
i++;
}
returni;
voidmain()
intu,v;
cout&
&
输入两个位数相同的大整数:
endl;
cin&
u;
v;
inti,j,m,n;
intp,x,y,z,w;
inta=1;
intb=1;
i=weishu(u);
for(intk=1;
k&
=i;
k++)
a=a*10;
for(intq=1;
q&
=i/2;
q++)
b=b*10;
w=u/b;
y=v/b;
x=u-w*b;
z=v-y*b;
p=w*y*a+((w+x)*(y+z)-w*y-x*z)*b+x*z;
u&
*&
v&
=&
p;
教师评语:
成绩:
√优良中及格不及格
算法实验报告二动态规划法实验
利用动态规划方法设计背包问题算法,掌握动态规划法的基本思想和算法设计的基本步骤。
设计0/1背包问题的动态规划算法,要求输出背包内物品的最大价值以及选入背包的物品种类。
利用c语言(c++语言)实现算法,给出程序的正确运行结果。
输入:
各物品的体积、价值,背包容量
输出:
放入背包的物品的体积,放入物品的最大价值
fori&
-0ton
v[i,0]&
-0
endfor
forj&
-0toc
v[j,0]&
-1ton
-1toc
v[i,j]&
-v[i-1,j]
if(si&
=jandv[i-1,j-si]+vi)&
v[i,j])
-v[i-1,j-si]+vi
item[j]=i
-cdownto1(i=i-item[i]的体积)
printf(s[item[i]])
returnv[n,c]
在定义数组时数组的大小不能是变量,也不能定义一个变量从键盘输入一个常数,再用这个变量定义数组,只能直接用常量定义数组或者用宏定义的量来定义数组。
在进行多个for循环时,不管他们之间有没有关系,循环中定义的变量不能一样。
在定义数组v[][]时,数组大小必须是n+1、c+1。
在进行本次实验时,我知道了背包程序的算法以及它的基本的意思,算法想要做什么。
我还掌握了一些在学c++时没有注意到的一些小问题。
如在定义数组时数组的大小不能是变量,也不能定义一个变量从键盘输入一个常数,再用这个变量定义数组,只能直接用常量定义数组或者用宏定义的量来定义数组。
在进行多个for循环时,不管他们之间有没有关系,循环中定义的变量不能一样。
在定义数组v[][]时,数组大小必须是n+1、c+1。
#include&
#definen10
#definec12
ints[n],v[n];
intv[n+1][c+1];
intitem[c];
物品的体积:
for(intf=0;
f&
n;
f++)
s[f];
物品的价值:
for(inth=0;
h&
h++)
v[h];
for(intk=0;
=n;
v[k][0]=0;
for(intm=0;
m&
=c;
m++)
v[0][m]=0;
for(inti=1;
i&
i++)
for(intj=1;
j&
j++)
v[i][j]=v[i-1][j];
if(s[i]&
=j&
amp;
v[i-1][j-s[i]]+v[i]&
v[i][j]){
v[i][j]=v[i-1][j-s[i]]+v[i];
item[j]=i;
放入背包的物品的体积:
for(intp=c;
p&
=1;
p=p-s[item[p]])
s[item[p]];
背包的最大价值:
;
v[n][c]&
√优良中
及格不及格篇二:
分治算法实验报告
本科学生综合性实验报告
姓名___刘春云学号_0103918__
_
专业__软件工程__班级_103__
实验项目名称_二分搜索问题的分治算法实验指导教师及职称_____赵晓平_____开课学期2011
至_2012学年_3_学期
上课时间2012年2月18日
学生实验报告
(1)
一、问题描述
二分查找又称折半查找,即在一串已排好序的需要处理的数据中多次用折半的方法查找出要搜索出的数据。
二、解题思路
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;
否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
三、算法描述
用一个数组来存储数据,具体的结构体为:
typedefstructlist{
doubleelem[100];
intlength;
}list;
其中length是数据的总个数
比较表中间位置记录的关键字与查找关键字的大小,逐步缩小查找范围实现代码为:
while(low&
high)
mid=(low+high)/2;
if(l.elem[mid]==key){}
elseif(l.elem[mid]&
key)
low=mid;
outfile&
你所要搜索的数据在第&
mid+1&
个位置&
break;
else
high=mid;
if(high==low+1){
抱歉!
你所要搜索的数据不在你所输入的数据中break;
范围
}在上段代码中low表示搜索区间的最小范围,hiah则表示搜索区间的最大
在代码中出现的intinit_list(list&
l)是一个初始函数用于从input.txt文件中读入
数据并判断数据是否升序排列。
intsearch(intlow,inthigh,list&
l)是查找函数用于折半查找。
四、算法实现
#include&
iostream&
#include&
fstream&
usingnamespacestd;
}list;
intinit_list(list&
l)//初始化函数{}
l)//查找函数{
l);
intn=0;
ifstreaminfile;
请输入数据(必须是从小到大排序的)&
infile.open(input.txt,ios:
:
in);
ofstreamoutfile;
outfile.open(output.txt,ios:
app);
while(infile&
l.elem[n])//从文件中输入已排序数组,直到文件中无数据读取
n++;
infile.close();
l.length=n;
for(inti=0;
l.length-1;
i++)//判断输入的数据是否有序{
if(l.elem[i]&
l.elem[i+1]){}
朋友请不要玩我!
return0;
}//判断输入的数据是否有序
二分查找中......&
search(0,l.length-1,l);
return1;
ofstreamoutfile;
intmid=0;
//中点篇三:
分治法实验报告
石家庄经济学院
《算法设计与分析》实验报告
姓名:
班级:
学号:
指导教师:
完成日期:
一、实验名称
分治法实验
二、实验目的
1.掌握分治法的基本思想、求解问题的基本步骤;
2.掌握分支算法的一般模式;
3.根据问题采取有效的分解和合并的方式,能够分析确定问题的阈值;
4.掌握分治算法的时间复杂度,并能利用c语言实现算法。
三、实验内容及要求
1.大整数乘法。
(1)求解两个n位的二进制整数的乘法,设n=2k;
(2)利用分治的思想分析和求解问题;
(3)利用c语言实现算法,要求结果正确。
2.矩阵相乘(选做)
(1)求解两个n阶方阵的乘法,设n=2k;
(2)可利用基本的分解
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分治 实验 报告