电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

关于数字排列的一个程序


发布日期:2021/9/1
 

输出的所有排列组合不能在第三位不能相邻

先看代码吧

import javautilArrayList;

import javautilList;

import javautilSet;

import javautilTreeSet;

/**

*

* @author 赵学庆

*

*/

public class T {

public static List<String> find(List<String> list) {

List<String> rtn = new ArrayList<String>();

String str;

for (int i = ; i < listsize(); i++) {

str = listget(i);

listremove(i);

if (listsize() == ) {

rtnadd(str);

} else {

List<String> sList = find(list);

for (String s : sList) {

rtnadd(str + s);

if (slength() == ) {

addNumber(str + s);

}

}

}

listadd(i str);

}

return rtn;

}

public static void addNumber(String str) {

if (strcharAt() == || ntains() || ntains()) {

return;

}

setadd(str);

}

public static Set<String> set = new TreeSet<String>();

public static void main(String[] args) {

List<String> list = new ArrayList<String>();

listadd();

listadd();

listadd();

listadd();

listadd();

listadd();

find(list);

Systemoutprintln(setsize());

int cols = ;

for (String s : set) {

Systemoutprint(s+ );

if(cols==) {

Systemoutprintln();

cols = ;

}

}

}

}

import javautilArrayList;

import javautilList;

import javautilSet;

import javautilTreeSet;

/**

*

* @author 赵学庆

*

*/

public class T {

public static List<String> find(List<String> list) {

List<String> rtn = new ArrayList<String>();

String str;

for (int i = ; i < listsize(); i++) {

str = listget(i);

listremove(i);

if (listsize() == ) {

rtnadd(str);

} else {

List<String> sList = find(list);

for (String s : sList) {

rtnadd(str + s);

if (slength() == ) {

addNumber(str + s);

}

}

}

listadd(i str);

}

return rtn;

}

public static void addNumber(String str) {

if (strcharAt() == || ntains() || ntains()) {

return;

}

setadd(str);

}

public static Set<String> set = new TreeSet<String>();

public static void main(String[] args) {

List<String> list = new ArrayList<String>();

listadd();

listadd();

listadd();

listadd();

listadd();

listadd();

find(list);

Systemoutprintln(setsize());

int cols = ;

for (String s : set) {

Systemoutprint(s+ );

if(cols==) {

Systemoutprintln();

cols = ;

}

}

}

}

输出结果

网友提供的一个比较优化的算法

import javautilSet;

import javautilTreeSet

/**

* 原始版本没有考虑重复问题我进行了修正<br>

* 此算法的精华就是让一个字符串的所有位置都进行互换<br>

* 这样就产生了所有可能出现的字符串

*

* @author 赵学庆nicky_zs <A >></A>

*/

public class MyTest {

public static void main(String args[]) {

char[] number = new char[] { };

perm(number numberlength );

Systemoutprintln(setsize());

int cols = ;

for (String s : set) {

Systemoutprint(s + );

if (cols == ) {

Systemoutprintln();

cols = ;

}

}

}

public static void addNumber(String str) {

setadd(str);

}

public static Set<String> set = new TreeSet<String>();

public static void perm(char[] n int beg int end) {

if (beg == end) {

String result = StringvalueOf(n);

if (n[] == )

return;

if (ntains() || ntains())

return;

addNumber(StringvalueOf(n));

return;

}

for (int i = beg; i <= end; ++i) {

swap(n beg i);

perm(n beg + end);

swap(n beg i);

}

}

public static int number = ;

public static void swap(char[] n int a int b) {

char temp = n[a];

n[a] = n[b];

n[b] = temp;

}

}

上一篇:敏捷自动释放进程的6个提示

下一篇:带图片的,多列的DropDownList的实现