三个由1-9组成且各位均不相同的三位数A,B,C,找出所有A+B=C的组合

package demo.algorithm;

import java.util.Set;
import java.util.TreeSet;

/**
 * 问题:三个由1-9组成且各位均不相同的三位数A,B,C,找出所有A+B=C的组合 
 * 例如:A=127 B=368 C=495
 * 思路:六重循环找出两个位数各不相同的三位数,将两个三位数相加,得到第三个三位数
 * 判断第三位数是否大于999,如果大于则不满足条件,如果不大于,将所有三个三位数以字符存到Set中,判断Set的长度
 * 如果Set长度等于9则符合条件
 */
public class Main {
	public static void main(String[] strs) {

		int A = 0, B = 0, C = 0;

		for (int i = 1; i < 9; i++) {
			for (int j = 1; j < 9; j++) {
				if (i == j) {
					continue;
				}
				for (int s = 1; s < 9; s++) {
					if (s == i || s == j) {
						continue;
					}
					// 第一个三位数A
					A = i * 100 + j * 10 + s;

					for (int k = 1; k < 9; k++) {
						if (k == s || k == j || k == i) {
							continue;
						}
						for (int n = 1; n < 9; n++) {
							if (n == s || n == j || n == i || n == k) {
								continue;
							}
							for (int r = 1; r < 9; r++) {
								if (r == s || r == j || r == i || r == k
										|| r == n) {
									continue;
								}
								// 第二个三位数B
								B = k * 100 + n * 10 + r;
								if (A + B > 1000) {
									continue;
								}

								// 第三个三位数C
								C = A + B;

								// 将ABC合并为字符串存在Set中
								String sun = (A + "" + B + "" + C + "");
								// System.out.println("A="+A+"B="+B+"C="+C);
								Set exam = new TreeSet<>();
								for (int m = 0; m < sun.length(); m++) {
									exam.add(sun.charAt(m));
								}
								// 如果Set长度为9则符合条件,因为Set保存的数据不能重复
								if (exam.size() == 9 && !exam.contains('0')) {
									System.out.println("A=" + A + "B=" + B
											+ "C=" + C);
								}
							}
						}
					}
				}
			}
		}

	}
}

个人觉得这个办法太笨,但是一下也没有跟好的想法,如果哪位大神有更好的思路,可以在评论区提出来,学习学习~~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值