最近打算把印象笔记记的笔记慢慢地写成博客的形式归档起来,也算是给自己的一个督促。

1.基础概念

这个概念最早接触是在高中时学oi在那本老旧的竞赛书上接触到的。抛出的问题类似于

写一个函数, 如 Foo(const char *str), 打印出 str 的全排列, 如 abc 的全排列: abc, acb, bca, dac, cab, cba。。

排列和组合的区别就在于是否是有顺序的,全排列从字面上的意思就是列出所有元素的排列,其实这个直观的理解是没有错的。不过还是查一下网上的定义。

从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
公式:全排列数f(n)=n!(定义0!=1)

以上就可以大概了解全排列是个什么东西了。那么直接上一版最简单的通过递归实现的全排列代码。

阅读全文 »

开始记录一些东西吧,希望自己可以坚持下去~~