数字组合问题

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


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


方法一:列出取值范围内所有数据,分别检查是否符合条件

	public static void calculateNum1() {

		int count = 0;
		int a, b, c;
		//查询123-500之间满足条件的数字
		for (int i = 123; i < 500; i++) {
			a = i / 100;
			b = (i - a * 100) / 10;
			c = i % 10;
			//判断是否满足条件
			if (a > 0 && a < 5 && b > 0 && b < 5 && c > 0 && c < 5 && a != b
					&& a != c && b != c) {

				count++;
				System.out.print(i + " ");
			}
		}
		System.out.print("\n" + count);
	}


方法二:取值范围还可以进一步缩小,使循环更少

	public static void calculateNum2() {

		int count = 0;
		int Num;
		//百位
		for (int a = 1; a <= 4; a++) {
			//十位
			for (int b = 1; b <= 4; b++) {
				//个位
				for (int c = 1; c <= 4; c++) {
					//检查组合是否满足互不相等条件
					if ((a != b) && (a != c) && (b != c)) {
						//组合数据
						Num = a * 100 + b * 10 + c;
						count++;
						System.out.print(Num + " ");
					}
				}
			}
		}

		System.out.print("\n" + count);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值