全排列问题在公司笔试的时候很常见,这里介绍其递归与非递归实现。
递归算法
1、算法简述
简单地说:就是第一个数分别以后面的数进行交换
E.g:E = (a , b , c),则 prem(E)= a.perm(b,c)+ b.perm(a,c)+ c.perm(a,b)
然后a.perm(b,c)= ab.perm(c)+ ac.perm(b)= abc + acb.依次...
分类:
其他好文 时间:
2014-06-20 13:36:14
阅读次数:
206
1 #include 2 #include 3 using namespace std; 4 5
#define N 4 6 7 void fullarrange(char num[], int len, int index) { 8 if(index ==
len) { 9 ...
分类:
其他好文 时间:
2014-06-20 08:51:28
阅读次数:
293
A。水题。遍历字符串对所给的对应数字求和即可。B。简单题。对5个编号全排列,然后计算每种情况的高兴度,取最大值。C。dp。设dp[n][is]表示对于k-trees边和等于n时,如果is==1表示存在边至少为d的边,如果is==0表示不存在边至少为d的边。初始状态dp[0][0]=1。//和为n且不...
分类:
其他好文 时间:
2014-06-02 21:24:54
阅读次数:
275
题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985题目大意:问n长度的串用0~k的数字去填,有多少个串保证任意子串中不包含0~k的某一个全排列邀请赛上A的较多的一道题,比赛的时候死活想不出,回来之后突然就想通了,简直.....
= ...
分类:
其他好文 时间:
2014-05-28 18:38:04
阅读次数:
327
string-permutation-with-repeating-chars
分类:
其他好文 时间:
2014-05-26 18:52:06
阅读次数:
316
剑指offer上解决八皇后问题,没有用传统的递归或非递归回溯法,而是用了很巧妙的全排列法。
先说下八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处于同一行,同一列或者同意对角线上,求出所有符合条件的摆法。
全排列解决八皇后问题的思路如下:
由于8个皇后不能处在同一行,那么肯定每个皇后占据一行,这样可以定义一个数组A[8],数组中第i个数字,即A[i]表示位于第i行的皇后的列号。先把数组A[8]分别用0-7初始化,接下来对该数组做全排列,由于我们...
分类:
其他好文 时间:
2014-05-26 03:22:14
阅读次数:
223
HDU 4828 Grids
思路:可以转化为卡特兰数,先把前n个人标为0,后n个人标为1,然后去全排列,全排列的数列,如果每个1的前面对应的0大于等于1,那么就是满足的序列,如果把0看成入栈,1看成出栈,那么就等价于n个元素入栈出栈,求符合条件的出栈序列,这个就是卡特兰数了。然后去递推一下解,过程中需要求逆元去计算
代码:
#include
#include
const int ...
分类:
其他好文 时间:
2014-05-25 12:52:33
阅读次数:
389
Elegant String
题意:给定一个字符串,由0-k数字组成,要求该串中,子串不包含0-k全排列的方案数
思路:dp[i][j]表示放到i个数字,后面有j个不相同,然后想递推式,大概就是对应每种情况k分别能由那几种状态转移过来,在纸上画画就能构造出矩阵了,由于n很大,所以用快速幂解决
代码:
#include
#include
const long long MOD = ...
分类:
其他好文 时间:
2014-05-25 00:36:34
阅读次数:
211