啦啦啦啦啦ba 2015-09-09 08:41 采纳率: 0%
浏览 1869

【递归】全排列算法的问题

class AnagramApp {

static char[] arrChar;
static int size;
public static void main(String[] args) {
    String input = "abc";
    arrChar =input.toCharArray();
    size =input.length();
    doAnagram(input.length()); 

} 
public static void doAnagram(int newSize) {
    if (newSize == 1) 
        return; 
    for (int j = 0; j < newSize; j++) {
        doAnagram(newSize - 1); 
        if (newSize == 2) 
            displayWord(); 
        rotate(newSize); 
    }
}
public static void rotate(int newSize) {
    int j;
    int position = size - newSize;
    char temp = arrChar[position]; 
    for (j = position + 1; j < size; j++)
        arrChar[j - 1] = arrChar[j];
    //j++了
    arrChar[j - 1] = temp; 
}

public static void displayWord() {
    System.out.println(new String(arrChar) +"\t");
}

}

//以上代码看不懂,如何实现的,想要知道思路,不是一点一点运行的分析,
想知道这个人是怎么推理出来要这样做的,

  • 写回答

4条回答 默认 最新

  • threenewbee 2015-09-09 08:44
    关注

    简单来说,全排列算法用递归可以这么描述:

    如果是一个元素排列,那么只有一个情况

    如果有n个元素排列(n>2),这个问题可以分为
    先选取这个元素中的某一个作为开头,每种情况搭配对(n-1)个元素全排列的情况。

    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?