- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
全面分析试题,腾讯商业分析笔试题,需求分析师面试题,阿里数据分析师笔试题,综合分析类面试题,试题分析,数据分析笔试题,数据分析面试题,数据分析师笔试题,仪器分析试题及答案
* * * * * * * * * * * * * * * * * * * * * * * * 信息学竞赛全面分析问题 长沙市第一中学 曹利国 具体要求与步骤 对所给问题进行全面细致的分析,并对题目中给定的条件作出严谨的规定。 给出题中的输入输出方式及格式,形成一套完整的试题。 具体要求与步骤 能否使用多种方法解题,若能,则对多种可能的方法进行对比,根据具体算法确定问题的数据规模。 分析确定算法及数据结构,给出最适合本题的算法框架描述和主要数据结构及其作用. 构思程序,并设计程序中各个模块的目标和作用,并对编写程序过程中准备使用的技巧进行说明; 具体要求与步骤 以命题老师的身份对测试点进行估计,给出测试点并说明设计该测试点的测试目标; 对全套试题进行全面总结(包括难度分析、算法关键、对选手考察的关键点和知识点、处理技巧、建议选手的一般做题顺序)。 例题1:走迷宫问题(maze) 【题目描述】有一个n*n的迷宫,每个方格里都有着相应的数字。你从左上角出发,每次可以向上下左右四个方向最多移动k格,并且要求你每次到达的方格里的数字必须大于上一次所在方格的数字。现在要求你走过的方格的所有数之和最大,问这个最大和是多少。 解法一 基于产生式系统的搜索算法,效率极低 解法二(动态规划模型一) 我们首先很容易想到把矩阵拉成一条直线,然后按矩阵里的元素从小到大排序,并用no数组表示现在的元素在原矩阵中的位置。设f[i]表示前i个数中选取第I个数所能得到的最大和,则有: f[i] = Max { f[j] + a[i] } 且a[j] a[i],且现数列中元素j在原矩阵中可以达到现数列中的元素i在原矩阵中的位置。 易知所求答案为 Max{ f[i] } (k = i = n)。( k 表示矩阵左上角元素在新数列中的位置) 此算法时间复杂度最坏 O(n^4),空间复杂度 O(n^2)。 解法三(规划模型二) 因为题目中明确表示一次移动的两个存在大小关系,设路径为A(x1,y1),A(x2,y2)…A(xl,yl),那么可以得到A(x1,y1)A(x2,y2)…A(xl,yl),由此可以看出按照移动的步数划分阶段不会产生后效性,用f(l,x,y)表示在第l步移动到x,y步所能得到的最大和。状态转移: F(l,x,y)=max{f(l-1,x1,y),f(l-1,x,y1)}+A[x,y] (abs(x1-x)=k ,abs(y1-y)=k) F(0,1,1)=A[1,1] 时间复杂度为o(L*n2*k)。空间复杂度 O(n^3)。 解法四(规划模型三) 我们用f[i,j]表示到达矩阵(i,j)位置时所能得到的最大和,由于题目对递增序列的要求,使得这道题目不用转换成一维数列就可以直接进行规划,规划方程为: f[i,j] = Max { f[i1,j1] + a[i,j] } (a[i1,j1] a[i,j]) 其中(i1,j1)表示从(i,j)通过允许的移动可以到达的位置,则所求答案即为 Max { f[i,j] } (1 = i,j = n)。 此算法的时间复杂度 O(n*n*k),空间复杂度 O(n^2)。 解法五(图论模型) 以迷宫的每个房间为点,如果(a,b)可以移动到(c,d),那么就从(a,b)引出一条有向边到(c,d),边上的权值为A(c,d),建立一张有向图,然后以A(1,1)点为源点求最长路。用SPFA实现,大概的时间复杂度为o(n2*k)。 完整试题 【题目描述】 有一个n*n的迷宫,每个方格里都有着相应的数字。你从左上角出发,每次可以向上下左右四个方向最多移动k格,并且要求你每次到达的方格里的数字必须大于上一次所在方格的数字。现在要求你走过的方格的所有数之和最大,问这个最大和是多少。 【数据范围】1 = n = 100 ,1 = k = n ,方格里的数最大不超过integer。 【输入文件】 maze.in。 第一行为 n 和 k,以下 n 行是一个 n * n 的矩阵。 【输出文件】 maze.out。 仅一个数,为求得的最大和。 【样例输入】 3 1 3 6 2 4 7 9 2 3 1 【样例输出】 25 测试参数设计 Maze.in1 手工小数据,检验程序的正确性。 Maze.in2 k=0时的特殊数据,要考虑负数。 Maze.in3 n=1时的数据,要考虑负数。 Maze.in4 走n*n步的特例数据 Maze.in5 中等数据,要考虑长整。Maz
文档评论(0)