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

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

關(guān)于Java字符串全排列的問題

關(guān)于Java字符串全排列的問題

慕粉3233872 2016-11-23 10:34:10
import?java.util.ArrayList; public?class?test?{ ?static?ArrayList<String>?list?=?new?ArrayList<>(); ?public?static?void?main(String[]?args)?{ ??String[]?strs?=?{"A","B","C","D"}; ??perm(strs,?0,?strs.length); ??for(String?s:list){ ???System.out.println(s); ??} ??list.clear(); ?} ? ?private?static?void?perm(String[]?strs,int?start,int?end){ ??String?s?=?""; ??if(start==end){ ???for(int?i=0;i<strs.length;i++){ ????s+=strs[i]; ???} ???list.add(s); ??}else{ ???for(int?i=start;i<end;i++){ ????String?str?=?strs[start]; ????strs[start]?=?strs[i]; ????strs[i]?=?str; ????perm(strs,start+1,end); ????strs[i]?=?strs[start]; ????strs[start]?=?str; ???} ??} ?} }這是在網(wǎng)上找的代碼,但是看不太懂,有哪位大神可以詳細(xì)講下思路嗎?比如每一步的目的是什么,主要是遞歸那里真的想不通了
查看完整描述

1 回答

已采納
?
Frank_W毅3947945

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

????首先說一下,?static?ArrayList<String>?list?=?new?ArrayList<>();泛型掉了類型,應(yīng)該是?new?ArrayList<String>();

????再說遞歸,

????for(int?i=start;i<end;i++){

????String?str?=?strs[start];

????strs[start]?=?strs[i];

????strs[i]?=?str;

????perm(strs,start+1,end);

????strs[i]?=?strs[start];

????strs[start]?=?str;

????先說下遞歸算法的特點(diǎn):代碼簡潔,但邏輯性比較強(qiáng),理解起來要難一些。再說一下這段程序,關(guān)鍵是上面這段代碼的理解,相信你其他的應(yīng)該都可以看懂。這段代碼是指先交換數(shù)組strs[i]和strs[start]的值(注意:這個時候數(shù)組strs[i]和strs[start]的值已經(jīng)互換了,已經(jīng)改變了),再對satrt加一,進(jìn)行函數(shù)遞歸,最后又把strs[i]和strs[start]的值還原回來(這個時候恢復(fù)成為原來的數(shù)組)。當(dāng)start==end的時候,list列表添加入此時數(shù)組strs的所有字符串。說的可能比較抽象,你不妨試試幾組數(shù)據(jù),分別把start,end 設(shè)為0,2;0,3;1,3;1;4自己試著寫一下,找到思路。這個程序主要是對數(shù)組內(nèi)元素,第start到end元素進(jìn)行排列組合。并列出所有可能的排列值

查看完整回答
1 反對 回復(fù) 2016-11-26
  • TheLast1996
    TheLast1996
    perm(strs, 0, strs.length); for(String s:list){ System.out.println(s); } list.clear(); } 什么意思這段
  • Frank_W毅3947945
    Frank_W毅3947945
    perm(strs, 0, strs.length);是調(diào)用下面的perm函數(shù)呀,3個參數(shù)值分別是strs(創(chuàng)建的數(shù)組),0(起始位置),strs.length(終止位置,也就是整個數(shù)組了),for(String s:list){ System.out.println(s); },把list里每個元素遍歷一遍并賦值給s,打印輸出s,也就是說依次輸出list里面每一個元素的內(nèi)容,list.clear();清空list
  • 1 回答
  • 0 關(guān)注
  • 1832 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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