凑算式
题目描述:
B DEF
A + — + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中AI代表19的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
/**
 * @version 1.0
 * @auther 孙沐华
 */
public class test03 {
    private static int count=0;
    public static void main(String[] args) {
        /*
        B DEF
        A + — + ------- = 10
        C GHI
        (如果显示有问题,可以参见【图1.jpg】)
        这个算式中AI代表19的数字,不同的字母代表不同的数字。
        比如:
        6+8/3+952/714 就是一种解法,
        5+3/1+972/486 是另一种解法。
        这个算式一共有多少种解法?
        注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
         */
        int[] arr={1,2,3,4,5,6,7,8,9};
        arrange(arr,0);
        System.out.println(count);
    }
    public static void arrange(int[] arr ,int k){
        if (k>=arr.length){
            if (check(arr)) {
                count++;
            }
            return;
        }
        for (int i = k; i <arr.length ; i++) {
            int t=arr[k];
            arr[k]=arr[i];
            arr[i]=t;
            arrange(arr,k+1);
            t=arr[k];
            arr[k]=arr[i];
            arr[i]=t;
        }
    }
    public static boolean check(int[] arr){
        int a=arr[0];
        int b= arr[1];
        int c=arr[2];
        int d=arr[3]*100+arr[4]*10+arr[5];
        int e=arr[6]*100+arr[7]*10 +arr[8];
        if ((a+(b+0.0)/c+(d+0.0)/e)==10){  //这里加上0.0 是防止在做除法运算的时候出现数据丢失 
            //B*E + C*D == (10 - A) * C * E
            return true;
        }
        else return false;
    }
}
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号