zoukankan      html  css  js  c++  java
  • java实现第九届蓝桥杯全排列

    全排列

    对于某个串,比如:“1234”,求它的所有全排列。
    并且要求这些全排列一定要按照字母的升序排列。
    对于“1234”,应该输出(一共4!=24行):
    1234
    1243
    1324
    1342
    1423
    1432
    2134
    2143
    2314
    2341
    2413
    2431
    3124
    3142
    3214
    3241
    3412
    3421
    4123
    4132
    4213
    4231
    4312
    4321

    下面是实现程序,请仔细分析程序逻辑,并填写划线部分缺少的代码。

    // 轮换前k个,再递归处理

    import java.util.*;
    public class A
    {
    	static void permu(char[] data, int cur){
    		if(cur==data.length-1){
    			System.out.println(new String(data));
    			return;
    		}
    		
    		for(int i=cur; i<data.length; i++){
    			char tmp = data[i]; 
    			for(int j=i-1; j>=cur; j--) data[j+1] = data[j];
    			data[cur] = tmp;			
     
    			permu(data, cur+1);			
     
    			tmp = data[cur]; 
    			__________________________________________ ;
    			data[i] = tmp;			
    		}
    	}
    	
    	static void permu(String x){
    		permu(x.toCharArray(),0);
    	}
    	
    	public static void main(String[] args){
    		permu("1234");
    	}
    }
    
    // 根据已有的代码,那地方就是要回溯;根据for循环开始的交换方式还有上下两句代码,就可以得到答案了。
     
    for(int j = cur; j < i; j++) data[j] = data[j + 1];
    
  • 相关阅读:
    分层应用——怎样实现登录?
    浅谈UML的概念和模型之UML九种图
    C++ 顶层 const
    Cooley-Tukey算法 (蝶形算法)
    Android 4.4 Kitkat 使能 USB adb 功能
    Linux多线程编程小结
    排序算法汇总总结
    nodeJs基础
    MyBatis入门学习(一)
    IOC/DI的基本思想
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077166.html
Copyright © 2011-2022 走看看