- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息学竞赛3 - 4回溯法
邮票问题 设有已知面额的邮票m种,每种有n张。问:用总数不超过n张的邮票进行组合,能组合的邮票面额中可以连续出现面额数最多有多少?(1=m=100,1=n=100,1=邮票面额=255) 邮票问题 Input 第一行:m和n的值,中间用一空格隔开。 第二行:a[1..m](面额),每个数中间用一空格隔开。 Output 连续面额数的最大长度。 邮票问题 Sample Input 3 4 1 2 4 Sample Output 14 输出说明: 假设组合结果有:1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 则其连续面额数的最大长度为14(即1-14一直连续且长度最长). 置棋问题 在m×n的方格中任意指定x个格子构成一个棋盘(如图),在任一个构成的棋盘上放置k个棋子,要求任意两个棋子不得位于同一行或同一列上,要求输出满足条件的所有方案。?(注意棋盘是稀疏的,即x(m*n)/2,1 m、n 10)? 置棋问题 编程要求:?1、对给定的一个棋盘,求出该棋盘可放置的最多的棋子数p。?2、记di为该棋盘上放置i个棋子时的方案总数(1=i=p),其中经旋转和镜面反射而得到的方案记为不同的方案,对每一个i,求出相应的di。?3、对每一个棋盘,输出p和d1,d2,…,dp,只需输出数字,不必输出具体的棋盘方案。 ? 置棋问题 Input 第一行是两个数字,代表第一个棋盘的m和n,以下m行为一个仅由0、1组成的m×n的矩阵,某一个位置值为1表示相应的格子在这个棋盘上,为0表示相应的格子不在棋盘上。 Output 第一行是棋盘可放置的最多的棋子数p;?第二行分别列出从放1个棋子到放p个棋子的方案总数。? 置棋问题 Sample Input 5 5 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 Sample Output the maxnumber=4 1:10 2:28 3:24 4:5 ? * 4 1 X X 4 1 X X X X 3 X 4 1 X X X X 3 X X X X X 回溯法的几个关键条件 初始条件m=1;a[m] = 1; 循环条件a[1] N + 1 继续条件m N //尚未到达最后1行 继续 m++; a[m] = 1; 回溯条件a[m] == N m 1 //已经测试完这一行的所有列 //到达最后一列,且不是第1行 调整a[m]++; //右移1列 回溯法基本流程 初始条件 While(循环条件) { if(继续条件) { 继续 } else { while (回溯条件) { 回溯; } 调整; } } 回溯法演示 用回溯法产生所有3位数 初始条件m=1;a[m] = 1; 循环条件a[1] 10 继续条件m 3 //尚未到达最后1位 继续 m++; a[m] = 0; 回溯条件a[m] == 9 m 1 //已经测试完这一行的所有数字 //到达最后一列,且不是第1行 调整a[m]++; //右移1列 用回溯法解决问题 八皇后 桥本方程式 桥本分数式 八皇后问题 十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。 解决方案 简化为四皇后 确定解的表示方法 右图为2413 确定解的特征 2 4 1 3 四皇后问题 用数组表示解 2413为 A1=2 A2=4 A3=1 A4=3 不攻击的条件 A[i]≠A[j],不在同一列 Abs(A[i]-A[j]) ≠ i-k,不在同一斜线 2 4 1 3 神奇古尺 有一个古尺,总长36寸 因年代久远,中间标注的刻度只剩下8个 但是这个尺子还是可以一次性度量1~36之间的任意长度 请确定这8个刻度的位置 神奇古尺 可能刻度为1,3,6,13,20,27,31,35, 可能刻度为1,5,9,16,23,30,33,35, 四大湖泊 我国有4大淡水湖。 甲说:洞庭湖最大,洪泽最小。鄱阳湖第三。 乙说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。 丙说:洪泽湖最小,洞庭湖第三。 丁说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。 4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序 四大湖泊 甲:a=1,b=4,c=3 乙:b=1,a=4,c=2,d=3 丙:b=4,a=3 丁:c=1,d=4,b=2,a=3 洞庭
文档评论(0)