java第十一题

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。


狼顾之相1995
浏览 1175回答 1
1回答

阿旭_

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" : " ")); } } } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java