凑算式

Posted xingxingbclg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了凑算式相关的知识,希望对你有一定的参考价值。

题目描述:
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;
    

  

以上是关于凑算式的主要内容,如果未能解决你的问题,请参考以下文章

03凑算式(数字填空)

LQ0046 凑算式枚举

蓝桥杯第六届-牌型总数&&蓝桥杯第七届-凑算式&&蓝桥杯第七届-方格填数

算法笔记_123:蓝桥杯第七届省赛(Java语言B组部分习题)试题解答

蓝桥杯03

第七届蓝桥杯大赛个人赛省赛(软件类)B组