亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了有人能解釋一下這個代碼嗎?排列碼的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我正在做一個項目。我在Interwebz上找到了這個關于排列的代碼。我想用它作為編寫我自己的代碼的基礎。然而,我并不真正理解代碼中發生了什么。誰能幫我解釋一下代碼到底在做什么?

public void permutations(String prefix, String s) {
    int n = s.length();
    if (n == 0)
        System.out.println(prefix);
    else {
        for(int i = 0; i < n; i++){
           permutations(prefix + s.charAt(i), s.substring(0, i) + s.substring(i+1, n));
        }
    }
}

推薦答案

p(String prefix, String s)s中取出1個字符并將其添加到prefix,然后遞歸繼續,直到s為空。

s.charAt(i), s.substring(0, i) + s.substring(i+1, n)部分從s中提取字符。
假設s = "Magic!"i = 3然后charAt(i) = 'i's.substring(0, i) = "Mag"s.substring(i+1, n) = c!"。這將Magic!分解為iMagc!。下一次使用i = 4進入循環將導致c+Magi!。由于它為s中的每個字符執行此操作,因此每個字符都將位于遞歸步驟之一的前面。

調用層次結構如下所示

                                  / p("ab", "c") - "abc"
                 /- p("a", "bc") x
                /                  p("ac", "b") - "acb"
               /
              /                   / p("ba", "c") - "bac"
p("", "abc") x ---- p("b", "ac") x
                                  p("bc", "a") - "bca"
               
                                 / p("ca", "b") - "cab"
                 - p("c", "ab") x
                                   p("cb", "a") - "cba"

                 ^-- 1st for loop  ^- 2nd for      ^- 3rd one prints

這篇關于有人能解釋一下這個代碼嗎?排列碼的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:人能 代碼 排列 解釋
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定