为了账号安全,请及时绑定邮箱和手机立即绑定

java第十一题

java第十一题

狼顾之相1995 2016-09-19 09:04:57
题目:有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" : " "));
			}
		}
	}
}

//img1.sycdn.imooc.com//57df4429000153c104020587.jpg

查看完整回答
2 反对 回复 2016-09-19
  • 1 回答
  • 1 关注
  • 1174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信