zoukankan      html  css  js  c++  java
  • 全排列问题

    其中一个思路:如“12345”,将1插入2、3、4、5的所有组合串的可能位置(“2345”的全排列),“2345”的全排列则是2插入3、4、5的所有组合成可能位置,如此递归。

    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		List<string> list = quanpai("12345");
    		for (String string : list) {
    			System.out.println(string);
    		}
    		
    		System.out.println(list.size());
    	}
    
    	//全排列主函数
    	private static List<string> quanpai(String str) {
    		List<string> list = new ArrayList<string>();
    		if(str.length() <= 1)
    		{
    			list.add(str);			
    		}
    		else
    		{
    			char a = str.charAt(0);
    			String subStr = str.substring(1);
    			//得到子串的全排列
    			List<string> subList = quanpai(subStr);
    			//将第一个字符分别插入子串的全排列的每个位置
    			for (String string : subList) {
    				for (int i = 0; i <= string.length(); i++) {
    					String str1 = insertCharToStringAtIndex(a, string, i);
    					list.add(str1);
    				}
    			}
    		}
    		return list;
    	}
    	
    	
    	//将字符插入字符串指定位置
    	private static String insertCharToStringAtIndex(char ch, String str, int index)
    	{
    		String sub1 = str.substring(0, index);
    		String sub2 = str.substring(index);
    		return sub1 + ch + sub2;
    	}


    另附一种方案:http://my.csdn.net/t_eel/code/detail/56218

    参考:http://www.cnblogs.com/1-2-3/archive/2011/05/23/generate-permutation-part3.html

    warn
    作者:心亦
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Android 禁止软键盘自动弹出
    Android之Adapter用法总结
    如何成为android高手
    最强大的文案策略
    外贸电商的ERP有很多
    ERP行业销售如何挖掘潜在客户?
    新制造
    C#实现字符串相似度算法
    cmd
    对于大型公司项目平台选择j2ee的几层认识
  • 原文地址:https://www.cnblogs.com/szhx/p/3219333.html
Copyright © 2011-2022 走看看