java排列组合的算法 譬如我有(A,B,C,D),我想输出的结果是
{A,B,C,D}{AB},{AC},{AD},{BC},{BD},{CD}{ABC},{ABD},{ACD},{BCD}{ABCD}各位大神有会做的吗?...
{A,B,C,D}
{AB},{AC},{AD},{BC},{BD},{CD}
{ABC},{ABD},{ACD},{BCD}
{ABCD}
各位大神有会做的吗? 展开
{AB},{AC},{AD},{BC},{BD},{CD}
{ABC},{ABD},{ACD},{BCD}
{ABCD}
各位大神有会做的吗? 展开
5个回答
展开全部
import 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);
}
}
}
}
纯手打 实验过了可以用..望采纳,有不懂的欢迎发问
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以这样,
1、取1个元素形成集合,输出;
2、在前一步的基础上加入一个不重复的元素,输出所有可能性;
3、重复2步骤,直到所有元素都加进去了,输出;
4、对输出去重。
或者倒过来
1、把所有元素加入集合,输出;
2、在前一步的基础上移走一个元素,输出所有可能性;
3、重复2步骤,直到没有元素可以移走了,输出;
4、对输出去重
1、取1个元素形成集合,输出;
2、在前一步的基础上加入一个不重复的元素,输出所有可能性;
3、重复2步骤,直到所有元素都加进去了,输出;
4、对输出去重。
或者倒过来
1、把所有元素加入集合,输出;
2、在前一步的基础上移走一个元素,输出所有可能性;
3、重复2步骤,直到没有元素可以移走了,输出;
4、对输出去重
追问
最后就有算法参考一下啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
},{AC},{AD},{BC},{BD},{CD}
{ABC},{ABD},{ACD},{BCD}
{ABCD}
各位大神有会做的吗?
{ABC},{ABD},{ACD},{BCD}
{ABCD}
各位大神有会做的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询