就是比方说一个List中有{a,b,c,d}字符串,他们所有情况的组合是{a,b,c,d,ab,ac,bc,bd,ad,cd,abc,abd,acd,bcd,abcd}能提供正确代码的给高分
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);
}
}
}
}
纯手打 实验过了可以用..望采纳,有不懂的欢迎发问,
这个是不定个数的方法.你可以想输入几个都可以的.
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个回答 2013-12-17
ab,ba算是一种还是两种?