网站大量收购闲置独家精品文档,联系QQ:2885784924

算法设计与分析课程设计--拼图游戏问题.doc

算法设计与分析课程设计--拼图游戏问题.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析课程设计 题 目:拼图游戏问题 专 业:xxx 学 号:xxx 姓 名: 指导老师:xxx 一.课程设计内容 问题描述: 拼图游戏是很常见的而且很受欢迎的一种游戏。所谓拼图游戏,是指将一个完整的图片分割成若干个规则的小图片,然后将这些小图片随机的拼接在一起。玩家按照原图,通过移动各个图片,然后重新拼接出正确的图片 如何完成N*N拼图游戏当N较大时10*10 在完成的基础上进行优化,使滑块移动次数较少( 并非最优算法) 问题分析 1、递归法:将拼图的第一行和第一列的滑块移动至正确的位置,则此N*N的拼图问题就转化成立(N-1)*(N-1)的问题,重复进行该步骤 2、贪心算法 二.课程设计目的 1. 运用贪心算法的方法解决上述问题,设计出一个通过删除数字,从输入的要删除的个数s中决定程序对正整数n的删除次数,每次删除原数据中最大的最大数,使得剩下的书最小。 2.掌握贪心算法算法。 三.算法原理 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 1、最近下降点优先 2、按照高位→低位搜索递减区间,若存在递减区间,则删去该区间的首字符;否则删去尾字符。 3、重复上述规则,删下一个字符,依此类推,直至删去k个字符为止 四、贪心算法的基本思路1.建立数学模型来描述问题。 2.把求解的问题分成若干个子问题。 3.对每一子问题求解,得到子问题的局部最优解。 4.把子问题的解局部最优解合成原来解问题的一个解。 实现该算法的过程: 从问题的某一初始解出发; while 能朝给定总目标前进一步 do 求出可行解的一个解元素; 由所有解元素组合成问题的一个可行解。 五、程序流程图: Del(int D,int a[10],int n) Main() 六.源程序 #includestdio.h int Del(int D,int a[10],int n)//D 删除几位 a 数组 n 当前数组位数 { int res,max,i,j,x[10]; for(i=0;in;i++) x[i]=a[n-i-1]; while(1) { if(D==0) break; else D--; max=0; j=0; for(i=0;in;i++) { if(maxx[i]) { max=x[i]; j=i; } } // n=n-2; // for(i=j;in;i++) // x[i]=x[i+1]; // n++; n--; for(i=j;in;i++) x[i]=x[i+1]; } res=0; for(i=0;in;i++) res=res*10+x[i]; return(res); } void main() { int Res,D,z,n,m,i,a[10]; //m i=0; n=0; printf(------------------删数问题----------------------\n); printf(请输入一个高精度的正整数N(N=10位):); scanf(%d,m); printf(请输入要去掉数的位数S(S=N):); scanf(%d,D); while(1) { z=m/10; a[i]=m-z*10; m=z; i++; n++; if(m==0) break; } Res=Del(D,a,n); printf(删除后的结果为:); printf(%d\n,Res); } 七.程序运行结果 八.算法时空复杂度分析 此贪心算法的时间复杂度有while循环和for循环组成,所以此程序的时间复杂度为O(n^2) 此算法的空间复杂度为O(n^2) 九.工具软件及运行环境 1.工具软件:Microsoft Visual C++ 6.0 2.运行环境:Win32 Console Application 河北联合大学理学院 7 河北联合大学理学院

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档