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

我觉得可以看成数字的排列如 1 2 3 4分别代表A B C D 就是将1 2 3 4排列 四位的就是1234 三位的就是从这四个数字中取出三个数字,得到的三位数是最小的,如:取 1 2 3 可以得到123 213 321 132等等 其中123是最小的 两为数字的跟三位数字的一样 ...
java排列组合的算法 譬如我有A,B,C,D,我想输出的结果是
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); } } }} 纯手打 实验过了可以用..望采纳,有不懂的欢迎发问2013-10-31
我觉得可以看成数字的排列如 1 2 3 4分别代表A B C D
就是将1 2 3 4排列
四位的就是1234
三位的就是从这四个数字中取出三个数字,得到的三位数是最小的,如:
取 1 2 3 可以得到123 213 321 132等等 其中123是最小的
两为数字的跟三位数字的一样2013-10-31
可以这样,
1、取1个元素形成集合,输出;
2、在前一步的基础上加入一个不重复的元素,输出所有可能性;
3、重复2步骤,直到所有元素都加进去了,输出;
4、对输出去重。
或者倒过来
1、把所有元素加入集合,输出;
2、在前一步的基础上移走一个元素,输出所有可能性;
3、重复2步骤,直到没有元素可以移走了,输出;
4、对输出去重2013-10-31

然后广度遍历,记录路径。。。。
2013-10-31
},{AC},{AD},{BC},{BD},{CD}
{ABC},{ABD},{ACD},{BCD}
{ABCD}
各位大神有会做的吗?2013-10-31
mengvlog 阅读 7 次 更新于 2025-07-20 10:29:21 我来答关注问题0
檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部