扑克牌1~9只能用一次,输出所有符合xxx + xxx = xxx的组合。例如124 + 659 = 783;
package com.leetcode;
/**
* @author VinceLin
* 2020/4/13 4:46 下午
*/
public class Main {
/**
* 数字最小值
**/
private static final int MIN_VALUE = 1;
/**
* 数字最大值
**/
private static final int MAX_VALUE = 9;
/**
* 标记是否填充
**/
private static int[] book = new int[MAX_VALUE];
/**
* 标记数组没被填充
**/
private static final int IS_NOT_FILL = 0;
/**
* 标记数组被填充
**/
private static final int IS_FILL = 1;
/**
* 数字实际放的数组
**/
private static int[] result = new int[MAX_VALUE];
/**
* 十倍
**/
private static final int TEN = 10;
/**
* 百倍
**/
private static final int HUNDRED = 100;
public static void main(String[] args) {
dfs(0);
}
private static void dfs(int step) {
if (step >= MAX_VALUE) {
int a = result[0] * HUNDRED + result[1] * TEN + result[2];
int b = result[3] * HUNDRED + result[4] * TEN + result[5];
int c = result[6] * HUNDRED + result[7] * TEN + result[8];
if (a + b == c) {
System.out.println(a + " + " + b + " = " + c);
}
return;
}
for (int i = MIN_VALUE; i <= MAX_VALUE; i++) {
if (book[i - 1] == IS_NOT_FILL) {
result[step] = i;
book[i - 1] = IS_FILL;
dfs(step + 1);
book[i - 1] = IS_NOT_FILL;
}
}
return;
}
}