摘要:
算法的基本功能是将输入转化为输出。通常,这种转化不是一步就可以完成的,那样太简单,体现不出算法的价值。一个算法要分为诸多步骤来实现,这些步骤将输入转化为中间状态,并不断推进中间状态,使其达到最终状态,即输出。了解这些中间状态是理解形式化定义的关键。 算法定义为四元组(Q,I,Ω,f)。 Q: 所有状态的集合。这是静态的集合,定义了算法的处理域。 I: 输入状态的集合,即算法的初始状态。I是Q中的子集。 Ω: 输出状态的集合,即算法的最终状态。Ω也是Q中的子集。 f: 状态间的迁移规则。f将Q中的状态连接起来,使输入状态可以通过一条路径达到输出状态。 达到输出状态后,状态就不应再... 阅读全文
摘要:
permute算法是求序列的全排列,对于字符串来说,就是将组成该字符串的所有字符按各种方式排列一下。可以通过递归实现该算法。 递归的基准情形是:当字符串的长度小于等于1时,其全排列就是字符串自身,直接输出。 如果字符串长度大于1,则遍历字符串中的每个字符,以该字符作为目的串的起始字符,再对源串中的其余字符求全排列,直到字符串长度为1。如下: void permute(const std::string& s) { if (s.size() { std::cout } ... 阅读全文