當前位置:才華齋>IT認證>JAVA認證>

java算法字符組合排序

JAVA認證 閲讀(2.21W)

為幫助同學們學好java算法,yjbys小編為大家分享最新java算法——字符組合排序試題和答案如下:

java算法字符組合排序

  題目:

用1、2、2、3、4、5這六個數字,用java寫一個main函數,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"與"5"不能相連。

不是特別難的題目,暴力算和用圖論算(深度遍歷)都可以,結果是198.圖論的.話就是構造無向圖,然後深度優先遞歸。

package hic;

import ator;

import Set;

public class CharSequence {

private String[] c = {"1","2","2","3","4","5"};

private int n = th;

private boolean[] visited = new boolean[n];

private int[][] g = new int[n][n];

private TreeSetts = 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(th() == n){

(result);

result = tring(0,th()-1);

visited[index] = false;

}

else{

for(int i=0; i

if(!visited[i] && g[index][i] == 1){

depthFirst(i);

}else continue;

}

result = tring(0,th()-1);

visited[index] = false;

}

}

public void graphicGet(){

for(int i=0; i

depthFirst(i);

}

int count = 0;

t("圖論的結果:");

Iteratorit = ator();

while(ext()){

String tmp = ();

if(ains("35")) continue;

if(ains("53")) continue;

if(At(3) == '4') continue;

tln(tmp);

count++;

}

tln("共計:"+count+"個");

}

public void bruteForce(){

tln("暴力搜的結果:");

int count = 0;

for(int i = 122345; i<543222; i++){

String tmp = ""+i;

if(At(3) == '4') continue;

if(ains("35")) continue;

if(ains("53")) continue;

if(ains("5") && ains("4") && ains("3") && ains("1"))

{

int index = xOf("2");

if(index == -1) continue;

if(index == th()-1) continue;

if(tring(index+1)ains("2")){

tln(tmp);

count++;

}

}

}

t("共計:"+count+"個");

}

public void recrusive(){

}

public static void main(String[] args) {

CharSequence cs = new CharSequence();

//圖論的方法

hicGet();

//暴力搜索

eForce();

}

}