题目:有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
提交
取消