- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造法 构造法解题的类型 通常考虑的因素 ⑴选择的模型必须尽量多地体现问题的本质特征。但这并不意味着模型越复杂越好,累赘的信息会影响算法的效率。 ⑵模型的建立不是一个一蹴而就的过程,而是要经过反复地检验、修改,在实践中不断完善。 ⑶数学模型通常有严格的格式,但程序编写形式可不拘一格。? 在建模过程中经常使用的策略 ⑴对应策略:将问题a对应另一个便于思考或有求解方法的问题b,化繁为简,变未知为已知。 ??? ⑵分治策略:将问题的规模逐渐减少,可明显降低解决问题复杂程度。算法设计的这种策略称之为分治策略,即对问题分而治之。????????? ?? ⑴递推的分治策略 ⑵递归的分治策略 ⑶归纳策略:归纳策略则是通过列举试题本身的特殊情况,经过深入分析,最后概括出事物内在的一般规律,并得到一种高度抽象的解题模型。 ?? ⑴递推式 ?? ⑵递归式 ?? ⑶制定目标 ⑷贪心方案 ?? 一般方法 ⑴机理分析法 机理分析法 国际象棋(knight) 国际象棋是我们休息娱乐时所常玩的游戏。在各个棋子中,马的行进方式最为特殊,也为人们所津津乐道。我们都知道:马走的是“日”字,也就是说每次都是向水平或竖直方向移动1格,而向另一个方向移动2格,所以也可称作是1*2的马(走法如下图所示)。在图中我们看到一个马由8种跳的方向。 小明是一个数学爱好者,他将马的走法重新定义了一下,重新定义后的广义马成为n*m的马。为了研究广义马,小明让马从(0,0)出发,随意的在一张足够大的棋盘上跳。他发现,有时候广义马总是无法跳入某些格子中,比如从2*2的马永远不可能跳到(1,1),这令他非常感兴趣。他希望知道对于给定的n,m,n*m的广义马是否能够跳到所有的格子。由于n,m可以非常大,这令小明花了许多功夫在尝试上,但仍不能得出肯定的结论。于是他就来找你这个计算机专家了帮忙。 ? 【输入】 在输入文件knIGHT.In中包含了多组测试数据,每个测试数据占一行。 每组测试数据由2个数n,m(1≤n,m≤108)组成,表示广义马的类型。文件最后一行由2个0表示文件结束。 【输出】 将答案输出到文件knIGHT.OUT中,每组测试数据占一行。如果马能跳到指定的位置输出YES,否则输出ImPOSSIbLE。 ⑴当n为奇数时,将棋盘染色成黑白相间。自(0,0)出发的马始终在白格子上跳跃,黑色的格子是马永远到不了的。 将n*m的广义马对应1*n的广义马 第1种情况:若n,m有最大公约数p(p1),则马只能跳到形似(p*s,p*t)的格子上,其他的格子都到达到不了。 第2种情况:若n+m是偶数,类似于1*n马的情况,马只能在同色的格子内跳动,不能遍历棋盘。 第3种情况:若n+m为奇数且n,m互质。不妨设n为奇数,那么m为偶数。因为1*n马的问题已经被彻底解决,所以很自然的想将n*m经过一系列变换转化成1*n马的问题。我们可以看到马的跳法本质上是4种(另4种可以看成是以下4种跳法反跳一步): ①(m,n) ②(m,-n) ③(n,m) ④(n,-m) 马经过跳p次①、q次②、r次③、s次④后 水平方向的位移为(p+q)*m+(r+s)*n 竖直方向的位移为(p-q)*n+(r-s)*m 为了利用1*n马的结论,解不定方程(p+q)*m+(r+s)*n=1。 ∵n,m互质。∴该方程一定有解(p0,q0,r0,s0)。 又∵m是偶数n是奇数。∴(r0+s0)是奇数。 ∵马要遍历整个棋盘,其竖直和水平方向前进的步数之和(p0+q0)*m+(r0+s0)*n+(p0-q0)*n+(r0-s0)*m为奇数,∴(p0-q0)是偶数。 ∴(p0-q0)*n+(r0-s0)*m是偶数。 也就是马通过一系列的跳动所得到的效果相当于1*len的马跳一步的效果(len=(p0-q0)*n+(r0-s0)*m)。根据前面的结论,1*len的马可以遍历整个棋盘,所以当n+m为奇数且n,m互质时,n*m的马可以遍历整个棋盘。算法的时间复杂度为W(1),空间需求为W(1)。 模取幂 输入a,b,n,求ab mod n。 a,b,n均为整数,且1 ≤ a,n215,0≤b ≤ 10100,a,b不同时为0,n不为0。 思路点拨 (a+b) mod n = ((a mod n) + b) mod n ab mod n = (a mod n)b mod n ab mod n =(ab-1 mod n)a mod n =… =((…((a mod n)a mod
您可能关注的文档
最近下载
- 预防接种培训试题(预防接种培训试题).docx VIP
- 卫生院优质服务基层行:4.3.1财务管理:【B-2】工作制度 (1).docx VIP
- iSecure Center综合安防管理平台配置手册 V2.1.0.pdf VIP
- 《免疫与计划免疫》精品课件 (1).ppt VIP
- NB╱T 10385-2020 水电工程生态流量实时监测系统技术规范.pdf VIP
- NB_T 10385-2020 《水电工程生态流量实时监测系统技术规范》.docx VIP
- 基本不等式-高考历年真题.doc VIP
- 水电工程生态流量实时监测系统-技术规范.pdf VIP
- 预防接种及计划免疫PPT课件.ppt VIP
- 管道工程测量施工方案(3篇).docx VIP
文档评论(0)