用1、2、2、3、4、5这六个数字,用java写一个程序,打印所有的不同的排序,如:512234、412345、等,要求:4不能在第三为,3与5不能相连。
解决方案 »
- java二维数组的问题,高手请进!解决了高分相送!
- 如何使用Runtime.getRuntime().exec(String[]cmdArray)
- 如何在Java中实现 像Delphi中的 Midstr 函数 和 pos 函数
- 求助:
- helloworld能通过,其它程序有java.lang.NoSuchMethodError???
- Thread.sleep()不释放锁吗?
- javaMail怎么发送多附件???
- 那位大虾知道,那里有jb6下载
- 怎样用java连接sqlserver数据库,不用jdbc-odbc网桥?
- Java一知识点总结
- 哪位大哥来帮我弄一下这个简单的界面!!
- 求 单纯形法 的java实现。。。求源码,急。。。
http://topic.csdn.net/u/20070114/14/1170E023-E8F0-4331-8BD8-516C6F1E40DA.html
package yudylaw.java.sorted;import java.util.ArrayList;import java.util.List;
import java.util.Set;
import java.util.TreeSet;/**
* 输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻
*
* 采用字符跟踪
* @author ****
* 10:56:38 PM Apr 23, 2009
*/
public class Sorted {
public static List<String> find(List<String> list) {
List<String> rtn = new ArrayList<String>();
String str;
for (int i = 0; i < list.size(); i++) {
str = list.get(i);
list.remove(i);
if (list.size() == 0) {
rtn.add(str);
} else {
List<String> sList = find(list);
for (String s : sList) {
rtn.add(str + s);
if (s.length() == 5) {
addNumber(str + s);
}
}
}
list.add(i, str);
}
return rtn;
} /**
* 通过这个来排除
* @param str
*/
public static void addNumber(String str) {
if (str.charAt(2) == '4' || str.contains("35") || str.contains("53")) {
return;
}
set.add(str);
} public static Set<String> set = new TreeSet<String>(); public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
find(list);
System.out.println(set.size());
int cols = 10;
for (String s : set) {
System.out.print(s + " ");
if (cols-- == 1) {
System.out.println();
cols = 10;
}
}
}
}http://topic.csdn.net/u/20090512/17/ff3d65c3-4d29-4d81-913c-4f533b6a5d8a.html