首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 31 毫秒
1.
孔明棋是一种玩法简单,但其中变化无数的益智游戏。对孔明棋求解问题进行分析,提出了基于回溯思想的递归和非递归算法,运行结果表明了算法的有效性。文章还围绕栈在存储数据、消解递归等方面的应用对两个算法的优缺点进行了比较分析,递归算法结构清晰,但递归调用次数多;而非递归算法借助程序栈,将程序向循环转化,降低了时间复杂度,但算法难以分析和理解。因此在求解实际问题时可以采用递归思想来分析,然后借助栈用非递归来实现算法。  相似文献   

2.
介绍了递归法与回溯法的一般思想,分析了用递归法与回溯法求解组合问题,还对求解问题的复杂度以及优缺点进行了分析比较.  相似文献   

3.
递归问题的非递归实现方法的应用研究   总被引:1,自引:0,他引:1  
使用非递归方式实现递归问题的算法程序,不仅可以节省存储空间,而且可以极大地提高算法程序的执行效率.本文将递归问题分成简单递归问题和复杂递归问题;简单递归问题的非递归实现采用递推技术加以求解,复杂递归问题则根据问题求解的特点采用两类非递归实现算法,使用栈加以实现.  相似文献   

4.
0/1背包问题是计算机科学中的一个经典问题。动态规划法,递归法,回溯法是求解该问题的三种典型方法,使用这三种方法求解0/1背包问题,并对各算法进行了理论分析。用不同规模的0/1背包问题对三种算法进行测试,比较它们的运行时间,发现测试结果与其理论分析结果相符.最后指出就求解不同规模的0/1背包问题而言各算法的优劣。  相似文献   

5.
采用回溯法解决八皇后问题,给出了逻辑结构清晰的递归算法和非递归算法,并用Java语言加以实现  相似文献   

6.
递归算法的主要作用是把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来求解问题;另外,有些程序设计语言不支持递归,这就需要把递归算法转换为非递归算法。  相似文献   

7.
仇闽霞 《福建电脑》2008,24(12):203-204
递归算法是程序设计中的一种有力的工具,许多问题采用递归方法来编写求解程序.使程序非常简洁而清晰。本文针对学生在学习程序设计课程时对递归算法难以理解及掌握等情况,阐述了递归算法的本质及解决问题的思路。  相似文献   

8.
八皇后问题的非递归算法设计   总被引:1,自引:0,他引:1  
采用回溯法来解决八皇后问题,用一种较好的数据类型来表示解空间,给出一种逻辑结构非常清晰的非递归算法,解决了递归算法中空间效率低的问题。  相似文献   

9.
板材的最优切割算法是一种穷举搜索寻求最优解的算法。该算法用回溯法将原本复杂的问题转换成几个子问题,并找出递归结束条件。用递归的程序设计方法求出所有的切割方案,记录下最优的切割方案。论文以印刷电路板的最优切割为例,详述了最优切割算法的设计与实现。  相似文献   

10.
递归程序具有逻辑清晰、代码简洁等优点,设计递归算法是求解很多实际问题的有效手段.排列和组合问题,是常见的计算机编程求解的问题.针对这类实际问题,进行了详细分析,设计了求解的递归算法,并通过C语言编程进行验证,运行结果表明,算法设计正确.对同类或相似问题,其分析方法及递归算法的设计思路也可以参考借鉴.  相似文献   

11.
递归做为一种算法设计思想在求解实际问题和程序设计中广泛应用,采用递归设计的算法具有思路清晰、易于描述复杂问题等优点。文中对递归算法的理论依据、设计思想、应用、递归的内部执行过程做了较为全面的探讨,并以火车进站问题为例,重点分析了如何根据问题的递归表达函数扩充为递归算法。同时,对递归的非递归化作了较为深入的分析和探讨,并给出了实例源程序。理论分析和实践证明,在具体应用问题中,通过寻找问题对应的递归表达函数,可以容易和准确地设计出求解的递归算法,提高算法设计效率。  相似文献   

12.
文章通过实例给出了采用母函数法同时解决递归算法的两个问题:复杂递归算法的时间复杂度的求解问题和递归算法到高效算法的转化问題,并由此设计出高效的组合算法.  相似文献   

13.
位运算在N皇后问题中的应用   总被引:1,自引:0,他引:1       下载免费PDF全文
利用位操作运算的快速性,将位运算应用到N皇后问题的解决中,并给出了位运算求解N皇后问题的算法。该算法较好地提高了问题求解的速度。通过VC++环境实现,该算法比普通的递归回溯算法的速度平均提高了40倍左右。  相似文献   

14.
全排列递归算法在算法教学中的重要性   总被引:1,自引:0,他引:1  
全排列递归算法简洁,清晰,可读性强。针对该算法在递归算法的设计以及回溯法中的应用.讨论了全排列递归算法在算法教学中的重要作用。  相似文献   

15.
排列,组合的编程及“凑24点”的求解   总被引:1,自引:0,他引:1  
唐大仕 《电脑》1995,(11):49-51
排列、组合的编程是非数值计算中最重要的部分之一.本文介绍一种新颖、简洁的排列、组合算法及遍历表达式的算法.并作为其应用,给出关于扑克牌游戏中“凑24点”问题求解的计算机实现.排列组合问题一般可表达为:找出几个自然数(1,2,…,n)中r个数的组合.对排列、组合常用的算法为多重循环法及递归法.在多重循环法中,循环重数与r相等,r改变时必须改变程序;在递归法中,一方面会占用大量的栈,另一方面对组合结果的获取也不方便.为了克服这些缺点,本文采用了一种新方法,它是回溯法的改进.  相似文献   

16.
使用Python开发语言,通过动态电路模型建模,采用递归回溯算法,编程解决了一道今年在网上比较火热的逻辑推理问题,并给出了最优的推理过程.这个建模和递归回溯方法,可以模拟人的逻辑推理过程,对解决同类的逻辑推理问题,有比较普遍的适用性.  相似文献   

17.
利用C#的绘图功能和线程睡眠功能,实现了八皇后问题求解过程的动态展现,有助于理解“回溯法”和递归编程的思想.  相似文献   

18.
线性递归Da taL og 程序优化算法   总被引:2,自引:0,他引:2  
提出了线性齐次DataLog逻辑程序的概念,并为该类程序设计了一个优化的求解算法。在此基础上提出了求解一般线性DataLog程序的优化算法,该算法利用带有的约束条件的递归调用方法,将线性DataLog程序求解问题变换成齐次程序的求解问题。算法简单,易于实现,可应用于任何线性DataLog程序的求解。  相似文献   

19.
为了培养学习编程的逆向思维,运用分治思想的递归算法提高解决问题的能力,理解分治和递归的关系,掌握递归算法解决问题的条件和原理是十分必要的。从提出问题、分析问题、抽象问题的特征、解决问题和分析递归算法的局限性的过程,运用比较法比较迭代与递归之间的关系,结合具体问题,对理解递归算法解决问题给出了有效的方法。用分治的递归方法求解问题,其结构简单,可读性强,但是递归算法理解起来有一定难度,研究了递归算法的特征、递归与分治之间的关系、递归与迭代之间的关系,根据时间和空间复杂度,给出了递归算法的深度建议。实践的结果证明,采用这样的方式,能够帮助读者理解逆向思维和分治思想的本质,提升运用递归算法解决生活和学习中的问题的能力。  相似文献   

20.
陈晓梅  胡春花 《福建电脑》2014,(2):130-131,146
回溯法是用于求解N后问题的常用算法。典型的回溯算法在N后问题的解空间中,用于判断合法子树的剪枝函数的时间效率较低。实际应用中,可以将位运算运用到回溯法的剪枝函数中。实验证明,使用位运算方法能够加速获得合法子树的效率,从而提高了使用回溯法求解N后问题的时间效率。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号