为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 1579 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信