2013-11-21 86 views
0

如果我有 'A', 'B', 'C' 的概率为:概率级联字符?

** 
abc 
acb 
bac 
bca 
cab 
cba 
** 
BufferedReader input = new BufferedReader(new FileReader("input.in")); 
    int x = Integer.parseInt(input.readLine()) ; 
    String [] ar = new String[x] ; 
    String output = ""; 


    for(int i =0 ; i< ar.length ; i++) 
    { 

     ar[i] = input.readLine() ; 
    } 

    for(int y = 0 ; y < ar.length ; y++) 
    { 
     for(int z =y ; z < ar.length ; z++){ 


     output = output.concat(ar[z]) ; 

     } 
    } 

    System.out.println(output); 

也许更多反正我怎么能编码呢?

+0

阅读排列/组合。 –

+1

这是什么问题?我不明白这件事。 – SudoRahul

+1

由*“概率是”*,你可能意味着*排列是*? – hyde

回答

2

如果我理解正确,您需要获取anagrams列表。递归会给你一个整洁的解决方案。这里是你如何对待你的问题:

  1. 为了使正字母词的字谜,你可以做最右边的n-1个字母的字谜,所以做出一个字“用户”你能解决字谜字母u并使所有可能的字典ser
  2. 之后,你'旋转'的单词,所以'用户'成为'血清'。
  3. 重复此过程,直到旋转所有字母并返回'用户'。

基本情况是单字母单词:它的字谜是单词本身。

P.S.有关递归主题的深入说明,特别是对字符串生成的递归方法,您可以阅读Lafore'a“Java中的数据结构和算法”的第6章。