枚举法_寻找三位数

题目:将数字 1~ 9 分成 3 个三位数,要求第 2 个三位数是第1个三位数的两倍,第3个三位数是第1个的三倍。即假定m为第 1个三位数,则第2个恰好为2*m, 第3个为 3*m,请输出这几个三位数。
输入:第一个三位数的数字

输出:满足题目条件的所有三位数

下面展示:超级暴力的枚举算法:

基本思路:

首先判断一个数的每一位都不同,同时每一位不为0,同时还要满足 第 2 个三位数是第1个三位数的两倍,第3个三位数是第1个的三倍

在判断3个3位数每一位都不相同。全部采用IF语句,特别适合新手看。

然后在循环的时候,起始的数应该是123,结束的数应该是987

package 三位数;

public class 三位数 {

	public static void main(String[] args) {
		int a = 0;  //三个三位数
		int b = 0;
		int c = 0;
		for (int i = 123; i <= 987; i++) {
			int[] a1 = { 0, 0, 0 };
			for (int j = 123; j <= 987; j++) {
				int[] b1 = { 0, 0, 0 };
				for (int k = 123; k <= 987; k++) {
					int[] c1 = { 0, 0, 0 };
					a = i;
					b = j;
					c = k;
					if (c == (3 * a) && b == (2 * a)) {
						
						a1[0] = a / 100;           //分别表示a、b、c的每一位
						a1[1] = (a % 100) / 10;
						a1[2] = a % 10;

						b1[0] = b / 100;
						b1[1] = (b % 100) / 10;
						b1[2] = b % 10;

						c1[0] = c / 100;
						c1[1] = (c % 100) / 10;
						c1[2] = c % 10;

						if (a1[0] != a1[1] && a1[0] != a1[2] && a1[1] != a1[2]
								&& b1[0] != b1[1] && b1[0] != b1[2]
								&& b1[1] != b1[2] && c1[0] != c1[1]
								&& c1[0] != c1[2] && c1[1] != c1[2]
								&& a1[0] != 0 && a1[0] != 0 && a1[1] != 0
								&& b1[0] != 0 && b1[0] != 0 && b1[1] != 0
								&& c1[0] != 0 && c1[0] != 0 && c1[1] != 0) {
							if (a1[0] != b1[0] && a1[0] != b1[1]
									&& a1[0] != b1[2] && a1[1] != b1[0]
									&& a1[1] != b1[1] && a1[1] != b1[2]
									&& a1[2] != b1[0] && a1[2] != b1[1]
									&& a1[2] != b1[2] && a1[0] != c1[0]
									&& a1[0] != c1[1] && a1[0] != c1[2]
									&& a1[1] != c1[0] && a1[1] != c1[1]
									&& a1[1] != c1[2] && a1[2] != c1[0]
									&& a1[2] != c1[1] && a1[2] != c1[2]
									&& b1[0] != c1[0] && b1[0] != c1[1]
									&& b1[0] != c1[2] && b1[1] != c1[0]
									&& b1[1] != c1[1] && b1[1] != c1[2]
									&& b1[2] != c1[0] && b1[2] != c1[1]
									&& b1[2] != c1[2]) {
								System.out.println(a + " " + b + " " + c);
							}
						}
					}

				}
			}
		}
	}
}


/*
运行结果;
192 384 576
219 438 657
273 546 819
327 654 981
*/


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值