java排列组合的算法 譬如我有(A,B,C,D),我想输出的结果是?

{A,B,C,D}{AB},{AC},{AD},{BC},{BD},{CD}{ABC},{ABD},{ACD},{BCD}{ABCD}各位大神有会做的吗?...展开


DIEA
浏览 1588回答 2
2回答

九州编程

1234567891011121314151617181920212223242526272829303132333435363738import&nbsp;static&nbsp;java.lang.System.*;import&nbsp;java.util.*;public&nbsp;class&nbsp;Test{&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String...args){&nbsp;&nbsp;ArrayList<String>&nbsp;l=new&nbsp;ArrayList<String>();&nbsp;&nbsp;out.println("请输入要排序的字母,输入$结束:");&nbsp;&nbsp;while(true){&nbsp;&nbsp;&nbsp;Scanner&nbsp;sc=new&nbsp;Scanner(in);&nbsp;&nbsp;&nbsp;String&nbsp;str=sc.nextLine();&nbsp;&nbsp;&nbsp;if(str.equals("$"))break;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l.add(str);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;String&nbsp;s="";&nbsp;&nbsp;System.out.println(s.isEmpty());&nbsp;&nbsp;f(s,l);&nbsp;}&nbsp;static&nbsp;void&nbsp;f(String&nbsp;s,ArrayList<String>&nbsp;l){&nbsp;&nbsp;if(s.isEmpty()){&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i<l.size();i++){&nbsp;&nbsp;&nbsp;&nbsp;out.println(s+l.get(i));&nbsp;&nbsp;&nbsp;&nbsp;if(i==l.size()-1)return;&nbsp;&nbsp;&nbsp;&nbsp;f(s+l.get(i),l);&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}else{&nbsp;&nbsp;&nbsp;char[]c=new&nbsp;char[1];&nbsp;&nbsp;&nbsp;c[0]=s.charAt(s.length()-1);&nbsp;&nbsp;&nbsp;String&nbsp;str=new&nbsp;String(c);&nbsp;&nbsp;&nbsp;for(int&nbsp;i=l.lastIndexOf(str);i<l.size();i++){&nbsp;&nbsp;&nbsp;&nbsp;out.println(s+l.get(i+1));&nbsp;&nbsp;&nbsp;&nbsp;if(i==l.size()-2)return;&nbsp;&nbsp;&nbsp;&nbsp;f(s+l.get(i+1),l);&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}&nbsp;}}&nbsp;纯手打&nbsp;实验过了可以用..望采纳,有不懂的欢迎发问

莫回无

可以这样,1、取1个元素形成集合,输出;2、在前一步的基础上加入一个不重复的元素,输出所有可能性;3、重复2步骤,直到所有元素都加进去了,输出;4、对输出去重。或者倒过来1、把所有元素加入集合,输出;2、在前一步的基础上移走一个元素,输出所有可能性;3、重复2步骤,直到没有元素可以移走了,输出;4、对输出去重
打开App,查看更多内容
随时随地看视频慕课网APP