题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
1 回答
已采纳
阿旭_
TA贡献217条经验 获得超353个赞
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Test33 {
public static void main(String[] args) {
/* 1、遍历所有可能性,利用进制穷举法,算上重复的有4的3次幂个 */
aa: for (int i = 0; i < Math.pow(4, 3); i++) {//
/* 2、将遍历的每一个十进制值,转换成相应的3位4进制数 */
String str = "00" + Integer.toString(i, 4);// 去掉重复的
str = str.substring(str.length() - 3);
/* 3、利用Set集合内部去重,若发现已添加过则去掉,这个数,重新回到下一个i分析 */
Set<String> mSet = new HashSet<String>();
for (int j = 0; j < str.length(); j++) {
if (!mSet.add(str.charAt(j) + "")) {
continue aa;// 已存在,遍历下一个数字
}
}
/* 4、 打印这个可能性 */
for (int j = 0; j < str.length(); j++) {
System.out.print((char) (str.charAt(j) + 1) + (j == str.length() - 1 ? "\n" : " "));
}
}
}
}
添加回答
举报
0/150
提交
取消
