亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

java排列組合的算法 譬如我有(A,B,C,D),我想輸出的結果是?

java排列組合的算法 譬如我有(A,B,C,D),我想輸出的結果是?

DIEA 2018-09-03 15:11:02
{A,B,C,D}{AB},{AC},{AD},{BC},{BD},{CD}{ABC},{ABD},{ACD},{BCD}{ABCD}各位大神有會做的嗎?...展開
查看完整描述

2 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

1234567891011121314151617181920212223242526272829303132333435363738import static java.lang.System.*;import java.util.*;public class Test{ public static void main(String...args){  ArrayList<String> l=new ArrayList<String>();  out.println("請輸入要排序的字母,輸入$結束:");  while(true){   Scanner sc=new Scanner(in);   String str=sc.nextLine();   if(str.equals("$"))break;   else     l.add(str);      }  String s="";  System.out.println(s.isEmpty());  f(s,l); } static void f(String s,ArrayList<String> l){  if(s.isEmpty()){   for(int i=0;i<l.size();i++){    out.println(s+l.get(i));    if(i==l.size()-1)return;    f(s+l.get(i),l);   }  }else{   char[]c=new char[1];   c[0]=s.charAt(s.length()-1);   String str=new String(c);   for(int i=l.lastIndexOf(str);i<l.size();i++){    out.println(s+l.get(i+1));    if(i==l.size()-2)return;    f(s+l.get(i+1),l);   }  } }純手打 實驗過了可以用..望采納,有不懂的歡迎發問


查看完整回答
反對 回復 2018-09-20
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

可以這樣,
1、取1個元素形成集合,輸出;
2、在前一步的基礎上加入一個不重復的元素,輸出所有可能性;
3、重復2步驟,直到所有元素都加進去了,輸出;
4、對輸出去重。
或者倒過來
1、把所有元素加入集合,輸出;
2、在前一步的基礎上移走一個元素,輸出所有可能性;
3、重復2步驟,直到沒有元素可以移走了,輸出;
4、對輸出去重

查看完整回答
反對 回復 2018-09-20
  • 2 回答
  • 0 關注
  • 1673 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號