这道题还挺好的,如果你的思路是每次生成一个全排列,然后累计到k次,那么停下来吧,肯定超时了亲。。
微软今年的笔试题里有一道类似的,我之前已经提到过了,是只有0和1的字符串,求第k个排列是什么样子的。这道题比那个要难一些,但是总体的思路是一样的。假设有n个数要组成排列,求第k个排列。像填表一样,从高位往地位,逐个填写。先考虑有n-1个数要组成排列,最多有(n-1)!种情况,当第n个数加入后,第n个...
分类:
其他好文 时间:
2014-05-13 13:42:02
阅读次数:
246
public class Perm{ public static void perm(Object[]
a, int k, int m) { if (k == m) for (int i = 0; i =
2,则对首个元素的取可能的所有值,后面n-1个元素进行全排列(递归)。时间...
分类:
编程语言 时间:
2014-05-12 05:09:00
阅读次数:
428
生成组合数是初中的知识,没有人不知道。组合数学我认为是最有意思的数学分支,室友应该是这方面的专家,他的纸牌问题我听都听不懂。。
不知道你们是什么感觉,我以看到组合数,马上会想到全排列,这可能是因为当时初中的时候,这两部分知识是放在一起讲的,也确实有一些联系。怎样生成全排列算法课在递归的那部分讲过,写的也比较多,很多字符串的问题我都忍不住想用全排列试一下。那能不能用递归的方法来生成组合数呢?
答...
分类:
其他好文 时间:
2014-05-11 13:15:13
阅读次数:
270
全排列可以用深搜的方式求解。解答树如下:
可以运行的代码:
import java.util.ArrayList;
import java.util.List;
public class Perm {
public static Integer[] data = {19, 37, 61, 79, 89};
public static int depth;
public...
分类:
其他好文 时间:
2014-05-09 21:09:51
阅读次数:
293
import org.junit.Test;
public class AllSort {
public void permutation(char[] buf, int start, int end) {
if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
for (int i = 0; i <= end; i++) {
...
分类:
编程语言 时间:
2014-05-07 08:26:47
阅读次数:
364
//字符串全排列package com.demo.acm;public class
AllSortChar { public static void allSort(char[] buf,int start,int end){
if(start==end){ ...
分类:
其他好文 时间:
2014-05-02 19:43:21
阅读次数:
256
首先,permutation指的是对元素的重排,比如a , b , c 三个元素的所有的重排为 abc, acb, bac,bca,cab,cba 总共 3! = 6 中情况,但是如何声称这六种情况呢,C++标准库定义了函数 next_permutation,来生成一组元素的所有的全排列。
首先,了解该函数的声明以及实现:
函数声明为: [摘自 www.cplusplus.com]...
分类:
编程语言 时间:
2014-05-01 18:31:34
阅读次数:
268
#include#include#includeusing namespace std;int
main(){ int n,i; char a[100000]; cin>>a; sort(a,a+strlen(a)); do{
cout<<a<<endl; }while(next_permut...
分类:
其他好文 时间:
2014-05-01 06:20:37
阅读次数:
368
组合数学、-排列组合数----sum求sum=sum*(m--)/i;----二维数组递推(打表)---原始公式(单个)数字太大,用分子分母约分-全排列模板-----生成全排列函数prev_permutation和next_permutation区别http://www.cnblogs.com/zh...
分类:
其他好文 时间:
2014-04-29 10:31:46
阅读次数:
408