返回题解分享
讨论 / 题解分享/ 帖子详情

凑算式(结果填空) - 题解

import java.util.Scanner;

public class Main {

static int[] num = new int[10];  //存储数组
static int ans = 0;
static boolean[] v=new boolean[10]; //标记数组

public static void main(String[] args) {
    dfs(1);
    System.out.println(ans);
}

public static void dfs(int step) {
    //终止状态
    if(step>9) {
        int A=num[1];
        int B=num[2];
        int C=num[3];
        int DEF=num[4]*100+num[5]*10+num[6];
        int GHI=num[7]*100+num[8]*10+num[9];
        if(A*C*GHI+B*GHI+DEF*C==10*C*GHI) {
            ans++;
            return;
        }
    }

    //寻找新状态
    for(int i=1;i<10;i++) {
        if(v[i]==true) {
            continue; //true为走过
        }
        v[i]=true; //标记为走过
        //加入队列中
        num[step]=i;
        dfs(step+1);
        //回溯
        v[i]=false;
        num[step]=0;
    }

}


}
0 回复 0 转发 3 喜欢 2 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!