dfs暴力满足等式

来源:互联网 发布:ubuntu更新命令 编辑:程序博客网 时间:2024/06/10 19:02

满足等式XXX+XXX=XXX的等式有多少个,X的范围为1到9,

import java.util.*;public class Main {    static Scanner in = new Scanner(System.in);    static int[] bool= new int[10];    static int[] a= new int[10];    static int sum=0;    static void dfs(int step){        //前面9个盒子已经填满,判断结果的正确性        if(step==9){            if((a[0]*100+a[1]*10+a[2])+(a[3]*100+a[4]*10+a[5])                    ==(a[6]*100+a[7]*10+a[8])){                sum++;            System.out.println((a[0]*100+a[1]*10+a[2])+"+"+(a[3]*100+a[4]*10+a[5])                    +"=="+(a[6]*100+a[7]*10+a[8]));                }            else                return;                        }        //每当站在一个盒子面前枚举所有可能,可能是1到9任一个数字        for (int i = 1; i <= 9; i++) {            //每个数字仅且可以使用一次            if(bool[i]==0){                a[step]=i;                bool[i]=1;                                dfs(step+1);                bool[i]=0;            }        }        return;    }    public static void main(String[] args) {       Arrays.fill(bool, 0);            dfs(0);                 System.out.println(sum/2);   }}