康托展开原公式:
把一个整数X展开成如下形式:
X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[2]*1!+a[1]*0!
其中a[i]为当前未出现的元素中是排在第几个(从0开始),并且0
知道康托展开展开以后,我们可以很容易的得到一种新的求1-n全排列的方法,只需要求出1-n全排列中的第一个,第二个...
分类:
其他好文 时间:
2016-05-11 07:24:24
阅读次数:
198
1020 逆序排列
基准时间限制:2 秒 空间限制:131072 KB 分值: 80
难度:5级算法题
收藏
关注
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。
如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。
1-n的全排列中,逆...
分类:
其他好文 时间:
2016-05-07 06:55:02
阅读次数:
200
本代码既可以输出重复和不重复字符串的全排列/**
* 含重复字符的字符串的全排列问题
* @author ShaoGaoyuan
*
*/
public class S_28 {
public static int count = 0;
public static void main(String[] args){
char[] list = {'a','b...
分类:
编程语言 时间:
2016-05-06 15:14:42
阅读次数:
191
Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3 ...
分类:
其他好文 时间:
2016-05-04 13:23:56
阅读次数:
240
这个题目的意思结合所给示例以及题目描述,可以知道。给一个数组,求该数组所组成的数字的全排列的下一个数字,这句话不懂没关系,我举个例子你就懂了
例如:
1.若给的是 1 2 3 ,那么你要将数组内容变为 1 3 2;
2.若给的是 3 2 1 ,那么i要见数组的内容变为1 2 3;
其实这是一个循环的排列,就是你给任意的数字排列,都可以找到下一个排列,大概就是这样的情...
分类:
其他好文 时间:
2016-05-03 18:46:29
阅读次数:
159
字符串的全排列问题: 给定字符串S[0...N-1],设计算法,枚举字符串的全排列。 1、无重复字符串全排列非递归算法 程序实现: 运行结果: 说明:在每次递归前需要保证字符串的顺序不变,因此有每次的替换过程。 2、有重复字符串队规算法 程序实现: 运行结果: 说明:本算法时间复杂度能达到O((n+ ...
分类:
其他好文 时间:
2016-05-01 17:39:56
阅读次数:
327
#include <iostream> #include <algorithm> /// next_permutation, sort里卖弄包括两个函数,桉顺序获得下一个要排列的数,也可以自己写一个泪时的函数。。 using namespace std; int main () { char myi ...
分类:
其他好文 时间:
2016-04-30 19:30:47
阅读次数:
163
两种做法,一种dp,一种dfs,因为这个数据比较小,所以dfs全排列的方式是可以接受的,但是当比较大的时候就不行了,所以dp的方式还是要掌握一下的,我这里是dfs的做法,网上有很多人写的dp,可以去看一下,尤其是当遍历到右括号的时候的处理方式需要好好想一想 ...
分类:
其他好文 时间:
2016-04-30 16:53:09
阅读次数:
182
#include<iostream> #include<algorithm> #include<cstring>#include<string.h> using namespace std; #include<assert.h> //反转区间 void Reverse(char* pBegin , ...
分类:
编程语言 时间:
2016-04-27 22:31:57
阅读次数:
430