P1149 火柴棒等式 Java

**数组a[i]:**拼成数字i需要的火柴根数
数组a的大小为什么是2001呢?
因为输入的n最大是24 , 所以拼9的话,三个9要用18根,还有6根,4根用来拼等号和加号,还有2根,只能拼1,所以拼成的最大的数是1999

import java.util.*;
class Main{
    static int res = 0;
    static int[] nums = new int[]{6,2,5,5,4,5,6,3,7,6};
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        n -= 4;//减去等号和加号的4根
        int[] a = new int[2001];
        a[0] = 6;// 0不大于等于1,所以这里直接赋值
        for(int i = 1 ; i <= 2000 ; i++)
        {
            int j = i;
            while(j >= 1) //计算拼成i需要多少根火柴
            {
                a[i] = a[i] + nums[j%10];
                j = j / 10;
            }
            
        }
        for(int i = 0 ; i <= 1000 ; i++)//这里最大1000 , 不太懂,反正弄大点就对了
        {
            for(int j = 0 ; j <= 1000 ; j++)
            {
                if(a[i]+a[j]+a[i+j] == n)
                    res++;
            }
        }
        
        System.out.println(res);

    }
}

猜你喜欢

转载自blog.csdn.net/qq_45260619/article/details/105577902
今日推荐