这道题还挺好的,如果你的思路是每次生成一个全排列,然后累计到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