摘要:
1. 你对回溯算法的理解 应用回溯算法的三个步骤: 1.首先得构造解空间树:子集树和排列树; 2.以深度优先的方式搜索解空间:递归或迭代; 3.设计剪枝函数避免无效搜索:使用约束函数,剪去不满足约束条件的路径或使用限界函数,剪去不能得到最优解的路径。 回溯法解问题的一个显著特征是,解空间树是虚拟的, 阅读全文
摘要:
一、对贪心算法的理解 贪心算法又称之为贪婪算法,在考虑问题时,总是做出在当前状况来说最好的算则,而不从整理来考虑。从某种意义上说是局部最优解,贪心算法所得到的答案并不一定是整体最优解,所以在使用贪心算法一定要考虑清楚,是否能使用贪心算法。选择的贪心策略必须具有无后效性,即当前选择的结果必须不能对之前 阅读全文
摘要:
1. 作业题"单调递增最长子序列"分析。 1.1 根据最优子结构性质,列出递归方程式 设c[ ]存放输入的一组数,l[ ]存放单调递增子序列的长度,max为l[ ]中最大元素以得到最长单调递增子序列的长度 递归方程式: l[ i ] = l[ j ] + 1, c[ i ] > c[ j ] && 阅读全文
摘要:
实践题目名称: 找第k小的数 问题描述: 设计一个平均时间为O(n)的算法,在n(1<=n<=1000)个无序的整数中找出第k小的数。 提示:函数int partition(int a[],int left,int right)的功能是根据a[left]~a[right]中的某个元素x(如a[lef 阅读全文
摘要:
对分治法的体会: 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 更准确地说是,将规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同。递归地解决子问题,然后将解合并得到原问题的解。 分治法在以下几种问题的情况来说是一种很 阅读全文