欢迎来到天天文库
浏览记录
ID:53710998
大小:36.00 KB
页数:3页
时间:2020-04-06
《常用算法枚举法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验五常用算法:枚举法递推法迭代法一、实验目的掌握枚举法,递推法、迭代法这3种常用算法。n个a二、实验内容1.编程求和:s=a+aa+aaa+…+aa…a,其中a是1~9中的一个数字。[提示]令各项为b0,b1,b2,…bn则b0=ab1=b0×10+ab2=b1×10+a…即每一项由前一项乘以10加a递推得到,然后求和。2.编程求出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身,例如153是一个“水仙花数”,因为153=13+53+33。要求采用枚举法。3.范例:设函数f(x)定义在区间[a,b]上,f(x)连续且满足f(a)×f(b)<0
2、,求f(x)在[a,b]上的根。采用割线法,迭代公式为:xi+1=xi+(xi-1-xi)/(f(xi)-f(xi-1))*f(xi)其代换规律为:首先用两端点函数值的绝对值较大者的对应点作为xi-1,较小者作为xi,即如果
3、f(a)
4、<
5、f(b)
6、,则将a赋给xi-1,将b赋给xi。用迭代公式得出xi+1,f(xi+1)。误差定义为:⊿x=(xi-1-xi)/(f(xi)-f(xi-1))*f(xi)当⊿x<ε或f(xi+1)==0则结束运算。否则用(xi,f(xi))代替(xi-1,f(xi-1)),(xi+1,f(xi+1))代替(xi,f(xi)),继续迭代。求解方程:
7、x*lg(x)=1的实根的近似值,误差不超过0.001。[提示]令f(x)=xlgx-1,则f(2)≈-0.398<0,而f(3)≈0.431>0,由此可知根在2与3之间。#include#includeusingnamespacestd;constmax=30;doublea=2,b=3,ep=0.001;intmain(){intmaxit,j;doublex1,x2,temp,f1,f2,dx;f1=a*log10(a)-1;f2=b*log10(b)-1;if(f1*f2>=0){cout<<"初值错!"<8、if(fabs(f1)9、10、(f2==0)){cout<<"方程的根为:"<11、到4五个数字,组成五位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。#includeusingnamespacestd;intmain(){inti,j,k,l,m,count=0;for(i=1;i<=4;i++){for(j=0;j<=4;j++){if(j==i)continue;for(k=0;k<=4;k++){if(k==312、13、k==i14、15、k==j)continue;for(l=0;l<=4;l++){if(l==316、17、l==i18、19、l==j20、21、l==k)continue;for(m=0;m<=4;m++){i22、f(m==i23、24、m==j25、26、m==k27、28、m==l)continue;cout<
8、if(fabs(f1)9、10、(f2==0)){cout<<"方程的根为:"<11、到4五个数字,组成五位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。#includeusingnamespacestd;intmain(){inti,j,k,l,m,count=0;for(i=1;i<=4;i++){for(j=0;j<=4;j++){if(j==i)continue;for(k=0;k<=4;k++){if(k==312、13、k==i14、15、k==j)continue;for(l=0;l<=4;l++){if(l==316、17、l==i18、19、l==j20、21、l==k)continue;for(m=0;m<=4;m++){i22、f(m==i23、24、m==j25、26、m==k27、28、m==l)continue;cout<
9、
10、(f2==0)){cout<<"方程的根为:"<11、到4五个数字,组成五位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。#includeusingnamespacestd;intmain(){inti,j,k,l,m,count=0;for(i=1;i<=4;i++){for(j=0;j<=4;j++){if(j==i)continue;for(k=0;k<=4;k++){if(k==312、13、k==i14、15、k==j)continue;for(l=0;l<=4;l++){if(l==316、17、l==i18、19、l==j20、21、l==k)continue;for(m=0;m<=4;m++){i22、f(m==i23、24、m==j25、26、m==k27、28、m==l)continue;cout<
11、到4五个数字,组成五位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。#includeusingnamespacestd;intmain(){inti,j,k,l,m,count=0;for(i=1;i<=4;i++){for(j=0;j<=4;j++){if(j==i)continue;for(k=0;k<=4;k++){if(k==3
12、
13、k==i
14、
15、k==j)continue;for(l=0;l<=4;l++){if(l==3
16、
17、l==i
18、
19、l==j
20、
21、l==k)continue;for(m=0;m<=4;m++){i
22、f(m==i
23、
24、m==j
25、
26、m==k
27、
28、m==l)continue;cout<
此文档下载收益归作者所有