zoukankan      html  css  js  c++  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]; 
                for(int j = cur;j < i;j ++) data[j] = data[j + 1];
                data[i] = tmp;            
            }
        }
        
        static void permu(String x){
            permu(x.toCharArray(),0);
        }
        
        public static void main(String[] args){
            permu("1234");
        }
    }
    #include <stdio.h>
    #include <string.h>
    
    //轮换前n个,再递归处理
    void permu(char* data, int cur)
    {
        int i,j;
    
        if(data[cur]==''){
            printf("%s
    ", data);
            return;
        }
    
        for(i=cur; data[i]; i++){
            char tmp = data[i];
            for(j=i-1; j>=cur; j--) data[j+1] = data[j];
            data[cur] = tmp;
    
            permu(data, cur+1);
    
            tmp = data[cur];
            for(j = cur + 1;j <= i;j ++) data[j - 1] = data[j];  //填空
            data[i] = tmp;
        }
    }
    
    int main()
    {
        char a[] = "1234";
        permu(a,0);
        return 0;
    }

    请注意:只需要填写划线部分缺少的内容,不要抄写已有的代码或符号。

  • 相关阅读:
    最近纠结致死的一个java报错java.net.SocketException: Connection reset 终于得到解决
    分享:fastjson 1.1.28 发布,Java 的 JSON 库
    Google Code Jam
    firefox 17.0 编包记(fedora 17)
    中文分词文献列表 Bibliography of Chinese Word Segmentation
    ThriftUsageC++ Thrift Wiki
    try thrift
    SENNA
    Ghostscript: Ghostscript Downloads
    DHCP简介
  • 原文地址:https://www.cnblogs.com/8023spz/p/10761098.html
Copyright © 2011-2022 走看看