计算机等级是怎么排列的,关于数字排列的一个程序

该代码示例展示了如何使用Java编程实现1,2,2,3,4,5数组的所有排列组合,同时满足4不在第三位以及3和5不相邻的条件。通过递归方法find()和辅助方法addNumber(),程序将符合条件的排列存储到TreeSet中,避免重复,并最终输出所有可能的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输出1,2,2,3,4,5的所有排列组合,4不能在第三位,3和5不能相邻

先看代码吧

import java.util.ArrayList;

import java.util.List;

import java.util.Set;

import java.util.TreeSet;

/**

*

* @author 赵学庆 www.java2000.net

*

*/

public class T {

public static List find(List list) {

List rtn = new ArrayList();

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 sList = find(list);

for (String s : sList) {

rtn.add(str + s);

if (s.length() == 5) {

addNumber(str + s);

}

}

}

list.add(i, str);

}

return rtn;

}

public static void addNumber(String str) {

if (str.charAt(2) == ‘4‘ || str.contains("35") || str.contains("53")) {

return;

}

set.add(str);

}

public static Set set = new TreeSet();

public static void main(String[] args) {

List list = new ArrayList();

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;

}

}

}

}

import java.util.ArrayList;

import java.util.List;

import java.util.Set;

import java.util.TreeSet;

/**

*

* @author 赵学庆 www.java2000.net

*

*/

public class T {

public static List find(List list) {

List rtn = new ArrayList();

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 sList = find(list);

for (String s : sList) {

rtn.add(str + s);

if (s.length() == 5) {

addNumber(str + s);

}

}

}

list.add(i, str);

}

return rtn;

}

public static void addNumber(String str) {

if (str.charAt(2) == ‘4‘ || str.contains("35") || str.contains("53")) {

return;

}

set.add(str);

}

public static Set set = new TreeSet();

public static void main(String[] args) {

List list = new ArrayList();

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;

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值