java算法——字符组合排序
文章作者 100test 发表时间 2011:03:18 19:40:20
来源 100Test.Com百考试题网
编辑特别推荐:
#0000ff>Java加载和实例化以及构造函数
#0000ff>关于计算Java程序运行时间
#0000ff>深入理解Java加载类的机制
题目:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。
不是特别难的题目,暴力算和用图论算(深度遍历)都可以,结果是198.图论的话就是构造无向图,然后深度优先递归。
package com.graphic.
import java.util.Iterator.
import java.util.TreeSet.
public class CharSequence {
private String[] c = {"1","2","2","3","4","5"}.
private int n = c.length.
private boolean[] visited = new boolean[n].
private int[][] g = new int[n][n].
private TreeSet ts = new TreeSet().
private String result = "".
public CharSequence(){
for(int i=0. i
for(int j=0. j
if(i == j) g[i][j] = 0.
else g[i][j] = 1.
}
}
g[3][5] = 0.
g[5][3] = 0.
}
public void depthFirst(int index){
visited[index] = true.
result = c[index].
if(result.length() == n){
ts.add(result).
result = result.substring(0,result.length()-1).
visited[index] = false.
}
else{
for(int i=0. i
if(!visited[i]