第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問這四種方式都是全排列嗎,排列輸出的順序也不一樣,它們的思路都是怎樣的呢,有什么區(qū)別嗎?

請問這四種方式都是全排列嗎,排列輸出的順序也不一樣,它們的思路都是怎樣的呢,有什么區(qū)別嗎?

慕標(biāo)琳琳 2019-03-20 18:15:54
1、第一種import java.util.Arrays;public class Main {        public static void main(String[] args) {        int[] a = new int[] { 1, 2, 3, 4 };        f(a, 0, a.length - 1);    }    public static void f(int[] a, int start, int end) {        if (start >= end) {            System.out.println(Arrays.toString(a));            return;        }        for (int i = start; i <= end; i++) {            int temp = a[start];            a[start] = a[i];            a[i] = temp;            f(a, start + 1, end);            temp = a[start];            a[start] = a[i];            a[i] = temp;        }    }}第二種import java.util.Arrays;public class Main {    public static void main(String[] args) {        int[] a = new int[4];        boolean[] vis = new boolean[5];        f(a, 0, vis);    }    public static void f(int[] a, int k, boolean[] vis) {        if (k >= a.length) {            System.out.println(Arrays.toString(a));        }        for (int i = 1; i <= a.length; i++) {            if (!vis[i]) {                a[k] = i;                vis[i] = true;                f(a, k + 1, vis);                vis[i] = false;            }        }    }}第三種import java.util.Arrays;public class Main {    public static void main(String[] args) {        int[] a = new int[4];        boolean[] vis = new boolean[4];        f(a, 1, vis);    }    public static void f(int[] a, int k, boolean[] vis) {        if (k > a.length) {            System.out.println(Arrays.toString(a));            return;        }        for (int i = 0; i < a.length; i++) {            if (!vis[i]) {                a[i] = k;                vis[i] = true;                f(a, k + 1, vis);                vis[i] = false;            }        }    }}
查看完整描述

1 回答

?
交互式愛情

TA貢獻(xiàn)1712條經(jīng)驗(yàn) 獲得超3個贊

  1. 除第一種是對數(shù)組的元素進(jìn)行全排列, 其余的都是對數(shù)組邊賦值邊進(jìn)行排列的, 所以后面三種其實(shí)說是對"數(shù)組進(jìn)行全排列"這種說法并不對, 只不過是下標(biāo)剛好是和數(shù)值一樣了

  2. 對全排列的基本思想都是一樣的, 使用遞歸前保存原來的狀態(tài), 遞歸彈出后恢復(fù).

  3. 結(jié)果不一樣是因?yàn)閷[i]的賦值不同, 第二種是a[i] = i, 三四種a[i] = k;

  4. 第四種的相當(dāng)于二三種的簡化,vis的標(biāo)記位與a數(shù)組合并了, 但是這樣不能對{0, 1, 2}這種數(shù)組進(jìn)行全排列了, 因?yàn)?相當(dāng)于未訪問意思了

  5. 第一種的end完全可以不用傳, 本質(zhì)就是數(shù)組長度


查看完整回答
反對 回復(fù) 2019-04-25
  • 1 回答
  • 0 關(guān)注
  • 392 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號