- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
1、数学模型记高精度数据为a1a2……an,题目很明确有两个要求:1)a1整除1且(a1*10+a2)整除2且……(a1*10n-1+a210n-2+……+an)整除n;2)求最大的这样的数。第93页,共137页,星期日,2025年,2月5日2、算法设计此数只能用从高位到低位逐位尝试失败回溯的算法策略求解,生成的高精度数据用数组的从高位到低位存储,1号元素开始存储最高位。此数的大小无法估计不妨为数组开辟100个空间。算法中数组A为当前求解的高精度数据的暂存处,数组B为当前最大的满足条件的数。第94页,共137页,星期日,2025年,2月5日算法的首位A[1]从1开始枚举。以后各位从0开始枚举。所以求解出的满足条件的数据之间只需要比较位数就能确定大小。n为当前满足条件的最大数据的位数,当i=n就认为找到了更大的解,in不必解释位数多数据一定大;i=n时,由于尝试是由小到大进行的,位数相等时后来满足条件的第95页,共137页,星期日,2025年,2月5日main(){intA[101],B[101];inti,j,k,n,r;A[1]=1;for(i=2;i=100;i++)//置初值:首位为1,其余为0A[i]=0;n=1;i=1;3、算法第96页,共137页,星期日,2025年,2月5日inta[20],b[20],c[40],d[40];intn,t,i,j,k;//t记录解的个数main(){inti,input(n);for(i=1;i=n;i++){b[i]=0;c[i]=0;c[n+i]=0;d[i]=0;d[n+i]=0;}try(1);}第61页,共137页,星期日,2025年,2月5日try(inti){intj;
for(j=1;j=n;j++)//第i个皇后有n种可能位置
if(b[j]=0)and(c[i+j]=0)and(d[i-j+n]=0){a[i]=j;//摆放皇后
b[j]=1;//占领第j列
c[i+j]=1;d[i-j+n]=1;//占领两个对角线
if(i8)try(i+1);//递归摆放下一皇后elseoutput();//完成任务,打印结果
b[j]=0;c[i+j]=0;d[i-j+n]=0;//回溯
}
}第62页,共137页,星期日,2025年,2月5日output(){t=t+1;
print(t,);
for(k=1;k=n;k++)print(a[k],);
print(“换行符”);}第63页,共137页,星期日,2025年,2月5日二、回溯算法框架1.回溯法基本思想2.算法设计过程3.算法框架第64页,共137页,星期日,2025年,2月5日回溯法是在包含问题的所有解的解空间树中。按照深度优先的策略,从根结点出发搜索解空间树,算法搜索至解空间树的任一结点时,总是先判断该结点是否满足问题的约束条件。如果满足进入该子树,继续按深度优先的策略进行搜索。否则,不去搜索以该结点为根的子树,而是逐层向其祖先结点回溯。回溯法就是对隐式图的深度优先搜索算法。1.回溯法基本思想第65页,共137页,星期日,2025年,2月5日四皇后问题的搜索过程第66页,共137页,星期日,2025年,2月5日1)确定问题的解空间:问题的解空间应只至少包含问题的一个解。2)确定结点的扩展规则:如每个皇后在一行中的不同位置移动,而象棋中的马只能走“日”字等。2.算法设计过程第67页,共137页,星期日,2025年,2月5日3)搜索解空间:回溯算法从开始结点出发,以深度优先的方式搜索整个解空间。这个开始结点就成为一个活结点,同时也成为当前的扩展结点。在当前的扩展结点处,搜索向纵深方向移至一个新结点。这个新结点就成为一个新的活结点,并成为当前扩展结点。如果在当前的扩展结点处不能再向纵深方向移动
原创力文档


文档评论(0)