2、0进制整数n(1n109)。编程计算书的全部页码中分别用到多少次数字0,1,2,9。程序算法将页码数除以10,得到一个整数商和余数,商就代表页码数减余数外有多少个19作为个位数,余数代表有1余数本身这么多个数作为剩余的个位数,此外,商还代表1商本身这些数出现了10次,余数还代表剩余的没有计算的商的大小的数的个数。把这些结果统计起来即可。程序代码#includeints10;记录09出现的次数inta10;/ai记录n位数的规律voidsum(intn,intl,intm)if(m=1)(intzero=1;for(inti=0;i=l;i+)/去除前缀0(
3、s0-=zero;zero*=10;if(n10)for(inti=0;i=n;i+)si+=1;return;/位数为1位时,出现次数加1/位数大于1时的出现次数for(intt=1;t=l;t+)/计算规律f(n)=n*10A(n-1)m=1;inti;for(i=1;it;i+)m=m*10;at=t*m;intzero=1;for(inti=0;il;i+)zero*=10;/求出输入数为10的n次方intyushu=n%zero;/求出最高位以后的数intzuigao=n/zero;/求出最高位zuigaofor(i=0;izuigao;i+)si+
4、=zero;/求出0zuigao-1位的数的出现次数for(i=0;iyushu)i+;s0+=i*(yushu+1);/补回因作模操作丢失的0szuigao+=(yushu+1);/补卜回最高位丢失的数目sum(yushu,l-i-1,m+1);/处理余位数voidmain()(inti,m,n,N,l;coutN;cout=10;i+)n/=10;/求出N的位数n-1l=i;sum(N,l,1);for(i=0;i10;i+)cout”数字i出现了:”si”次n;程序调试中的问题调试过程,页码出现报错。实验结果continue次次次次次次次次次次to192222
5、2111y-现现现现现现现现现现叫TT1-T1-TT1-T1-TTT1/T1-r出出出出出出出出出出a0123456789SWXXXXXXX子eS次翳搽次次次次次to5111165555y7=T=7=7=T=7=7=7=T=T=ke现现现现现现现现现现叫出出出出出出出出出出a0123456789SUmes数数数数数数数魏数数pr次次次次次次次次次次C5665518555O2333387222t67777366661222221111UJT=T:=了7:T=了7:T=了kE现现现现现现现现现现叫-41T-41
6、T-41T-41T-41T-41T-41T-41T-41T-41Tr出山出出出出出出出出LJ-Ia31234S67S9S字宰宰宰宰幸宰宰幸-于渺数数数教数数数数数数pr算法设计与分析实验报告二实验名称分治法实现归并排序算法评分实验日期2014年11月26日指导教师姓名专业班级学号实验要求了解用分治法求解的问题:当要求解一个输入规模为n,且n的取值相当大的问题时,如果问题可以分成k个不同子集合,得到k个不同的可独立求解的子问题,其中1kWn,而且子问题与原问题性质相同,原问题的解可由这些子问题的解合并得出。那末,对于这类问题分治法是十分有效的。掌
8、。程序算法归并排序算法procedureMERGESORT(low,high)/A(low;high)是一个全程数组,它含有high-low+130个待排序的元素/integerlow,high;iflowmidthenforkjtohighdo/处理剩余的元素/B(i)A(k);ii+1repeatelseforkhtomiddoB(i)A(k);ii+1repeatendif将已归并的集合复制到AendMERGE快速排序算法QuickSort(p,q)/将数组A1:n中的元素Ap,Ap+1,Aq按不降次序排列,并假定An+1是一个确定
9、的、且大于A1:n中所有的数。/intp,q;globaln,A1:n;ifpqthenj=Partition(p,q+1);/划分后j成为划分元素的位置QuickSort(p,j-1);QuickSort(j+1,q);endifendQuicksortprocedurePARTITION(m,p)/退出过程时,p带着划分元素所在的下标位置。/integerm,p,i;globalA(m:p-1)vA(m);im/A(m)是划分元素/looploopii+1untilA(i)3vrepeat/i由左向右移/looppp-1untilA(p)Wv
10、repeat/p由右向左移/ifipthencallINTERCHANGE(A(i),A(p)/A(i)和A(p)换位/elseexitendifrepeatA(m)A(p);A(p)v/划分元素在位置p/EndPARTITION程序代码归并排序#include#include#include#include#defineM11typedefintKeyType;typedefintElemType;structrecKeyTypekey;ElemTypedata;;typedefrecsqlistM;classguibingpublic:guib
11、ing(sqlistb)for(inti=0;iM;i+)ri=bi;voidoutput(sqlistr,intn)for(inti=0;in;i+)coutsetw(4)ri.key;coutendl;voidxuanze(sqlistb,intm,intn)inti,j,k;for(i=m;in-1;i+)k=i;for(j=i;jbj.key)k=j;if(k!=i)rectemp=bk;bk=bi;bi=temp;voidmerge(intl,intm,inth,sqlistr2)xuanze(r,l,m);xuanze(r,m,
12、h);output(r,M);inti,j,k;k=i=l;for(j=m;im&jh;k+)if(ri.key=rj.key)r2k=ri;TOCo1-5hzi+;elser2k=rj;j+;output(r2,M);while(jh)r2k=rj;j+;k+;while(i=m)r2k=ri;i+;k+;output(r2,M);private:sqlistr;voidmain()coutguibingfa1运行结果:n”;sqlista,b;inti,j=0,k=M/2,n=M;srand(time(0);for(i=0;iM;i+)ai.key=rand()
13、%80;bi.key=0;guibinggx(a);cout排序前数组:n;gx.output(a,M);cout数组排序过程演示:n;gx.merge(j,k,n,b);cout排序后数组:n;gx.output(b,M);cin.get();快速排序#include#include#include#include#defineMAXI10typedefintKeyType;typedefintElemType;structrecKeyTypekey;ElemTypedata;;typedefrecsqlistMAXI;classkuaisupublic:kua
14、isu(sqlista,intm):n(m)for(inti=0;in;i+)bi=ai;voidquicksort(ints,intt)inti;if(st)i=part(s,t);quicksort(s,i-1);quicksort(i+1,t);elsereturn;intpart(ints,intt)inti,j;recp;i=s;j=t;p=bs;while(ij)while(i=p.key)j;bi=bj;while(ij&bi.key=p.key)i+;bj=bi;bi=p;output();returni;voidoutput()f
15、or(inti=0;in;i+)coutsetw(4)bi.key;coutendl;private:sqlistb;intn;voidmain()coutkuaisu1.cpp运行结果:n”;sqlista1;inti,n=MAXI,low=0,high=9;srand(time(0);for(i=0;in;i+)a1i.key=rand()%80;kuaisupx(a1,n);cout数组排序过程演示:n;px.quicksort(low,high);cout排序后数组:n;px.output();cin.get();程序调试中的问题调试过程中,在排序方面有问题。实验结
16、果1.归并排序2.快速排序c:v*F:算法实验气分治法Debugkuaisufal.ezeIkuaisul.cppTn:散组排序过程演示二39222241637764747556222239416377647475562222394163776474755622223941566364747577222239415663647475772222394156636474757722223941566364747577腓序后数组二22223941566364747577算法设计与分析实验报告三实验名称动态规划算法实现多段图的最短路径问题评分实验日期2014年11月26日指导教
17、师姓名专业班级学号实验要求理解最优子结构的问题有一类问题的活动过程可以分成若干个阶段,而且在任一阶段后的行为依赖于该阶段的状态,与该阶段之前的过程如何达到这种状态的方式无关。最优子结构性质:原问题的最优解包含了其子问题的最优解。子问题重叠性质:每次产生的子问题并不总是新问题,有些子问题被反复计算多次。问题的最优子结构性质和子问题重叠性质是采用动态规划算法的两个基本要素。理解分段决策Bellman方程。每一点最优都是上一点最优加上这段长度。即当前最优只与上一步有关。VUS=0,u=minu+w.j详ji可Us初始值,u.第j段的最优值。一般方法1)找出最优解的性质,并刻画其
19、1by-1do/计算COST(j)/设r是一个这样的结点,(j,r)E且使c(j,r)+COST(r)取最小值COST(j)-c(j,r)+COST(r);D(j)-r;Repeat/向前对j-1进行决策/P(1)-1;P(k)-n;forj-2tok-1do/找路径上的第j个节点/P(j)-D(P(j-1);repeat;endFGRAPH程序代码#include#include#include#include#defineMAX100#definen12/*顶点数*/#definek5/*
20、段数*/intcnn;voidinit(intcost)/初始化图inti,j;for(i=0;i13;i+)for(j=0;j13;j+)cij=MAX;c12=9;c13=7;c14=3;c15=2;c26=4;c27=2;c28=1;c36=2;c37=7;c48=11;c57=11;c58=8;c69=6;c610=5;c79=4;c710=3;c810=5;c811=6;c912=4;c1012=2;c1112=5;voidfgraph(intcost,intpath,intd)/使用向前递推算法求多段图的最短路径intr
21、,j,temp,min;for(j=0;j=1;j-)temp=0;min=cjtemp+costtemp;/初始化最小值for(r=0;r=n;r+)if(cjr!=MAX)if(cjr+costr)min)/找到最小的rmin=cjr+costr;temp=r;costj=cjtemp+costtemp;dj=temp;path1=1;pathk=n;for(j=2;jk;j+)pathj=dpathj-1;voidbgraph(intbcost,intpath1,intd)/使用向后递推算法求多段图的最短路径intr,j,temp,min;for(j=0;j=n;
22、j+)bcostj=0;for(j=2;j=n;j+)temp=12;/初始化最小值/找到最小的rmin=ctempj+bcosttemp;for(r=0;r=n;r+)if(crj!=MAX)if(crj+bcostr)=2;i-)path1i=dpath1i+1;voidmain()intcur=-1;intcost13,d12,bcost13;intpathk;intpath1k;coutttt动态规划解多段图问题endl;coutnn;init(cost);fgraph(cost,path,d);cout输出使用向前递推算法后的最短路径:nn;for(inti=1
23、;i=5;i+)coutpathi;coutn;coutendl最短路径为长度:cost1endl;coutn;coutn输出使用向后递推算法后的最短路径:nn;bgraph(bcost,path1,d);for(i=1;i=5;i+)coutpath1i;coutn;coutendl最短路径为长度:bcost12endl;coutn;程序调试中的问题动态规划的思想很容易理解,但当用程序代码实现起来的时候又觉得有点困难,经过我反复的调试操作,发现对于邻接表的程序表达不是很好。实验结果算法设计与分析实验报告四实验名称贪心算法实现背包问题评分实验日期2014年11月26日
24、指导教师姓名专业班级学号实验要求优化问题有n个输入,而它的解就由这n个输入满足某些事先给定的约束条件的某个子集组成,而把满足约束条件的子集称为该问题的可行解。可行解一般来说是不唯一的。那些使目标函数取极值(极大或极小)的可行解,称为最优解。贪心法求优化问题算法思想:在贪心算法中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的决策(在一定的标准下)。决策一旦作出,就不可再更改。作出贪心决策的依据称为贪心准则(greedycriterion)。一般方法1)根据题意,选取一种量度标准。2)按这种量度标准对这n个输入排序3)依次选择输入量加入部分解中。如果当前这个输入量的加入,