2016-10-05 40 views
-4

您好,我需要一个java progaram的排列和两个输入一个字符串和一个整数的组合。例如,如果我们将字符串设置为“abcd”,并将第二个输入设置为2,则输出应该为{ab,ac,ad,ba,bc,bd,ca,cb,cd,da,db,dc }如果我们给第二个输入为3,那么组合应该是这样{ABC,ABD,坏,BCD,驾驶室,CBD .........}java progaram为两个输入,一个字符串和一个整数排列

这是我曾尝试

package aaa; 

import java.io.BufferedWriter; 
import java.io.FileWriter; 
import java.util.Scanner; 

public class Main { 



    public static void main (String args[]) 
    { 
     System.out.println("Please enter the string whose permutations we need to show "); 
     Scanner in = new Scanner(System.in); 
     String original=in.nextLine(); 
     System.out.println("enter number"); 
     int n=in.nextInt(); 
      System.out.println("Results are :"); 
      for (int i = 0; i < n; i++) { 
       permute1(original,n); 

      } 

    } 
    public static void permute1(String input, int x) 
    {   
     StringBuffer outputString = new StringBuffer(); 
     String input1 = input.substring(0,x-1); 
     int input1Length = input1.length(); 
     boolean[ ] used1 = new boolean[ input1Length ]; 
       char[ ] in = input1.toCharArray(); 

     doPermute (in, outputString, used1, input1Length, 0); 

    } 

    public static void doPermute (char[ ] in, StringBuffer outputString, 
    boolean[ ] used, int inputLength, int level) 
    { 
     if(level == inputLength) { 
      System.out.println (outputString.toString()); 
      return; 
     } 

     for(int i = 0; i < inputLength; ++i) 
     { 

      if(used[i]) continue; 

      outputString.append(in[i]); 
      used[i] = true; 
      doPermute(in, outputString, used, inputLength, level + 1); 
      used[i] = false; 
      outputString.setLength( outputString.length() - 1); 

     } 
    } 


} 

帮我建议

+1

欢迎来到SO。什么是你尝试过的问题? –

回答

0
import java.util.LinkedList; 
import java.util.List; 
import java.util.Scanner; 


public class Permutation { 
    static int c; 
    List<String> permutations = new LinkedList<String>(); 
    Scanner sc=new Scanner(System.in); 
    String input =sc.nextLine(); 
    int conbinationSize = sc.nextInt(); 
    boolean[] isChoosed = new boolean[input.length()]; 
    public void generateCombination(String partialOutput) { 
     if (partialOutput.length() == conbinationSize) { 
      permutations.add(partialOutput); 
      c++; 
      return; 
     } 
     for (int i = 0; i < input.length(); ++i) { 
      if (!isChoosed[i]) { 
       isChoosed[i] = true; 
       generateCombination(partialOutput + input.charAt(i)); 
       isChoosed[i] = false;  
      } 
     } 
    } 

    void printCombination() { 
     for (String c : permutations) { 
      System.out.println(c);   
     } 
    } 
    public static void main(String[] args) { 
     Permutation dfs = new Permutation(); 
     dfs.generateCombination(""); 
     dfs.printCombination(); 
     System.out.println(c); 
    } 
} 
相关问题