暴力枚举解决火柴棍等式问题

暴力枚举解决火柴棍等式问题

题目

在这里插入图片描述
在这里插入图片描述

代码实现

package meiju;


public class HuoChai {
	public static void main(String[] args) {
		System.out.println(huochai(20));
    }
	public static int huochai(int in){
		in-=4;//+号和=号要占4根火柴
        int sum=0;
        int a=0,b=0,c=0;//分别表示A、B、C的大小
        //枚举a和b
        for(a=0;a<=1111;a++){//1111表示近似值精确值是711
            for(b=0;b<=1111;b++){
            	c=a+b;//计算出c
                if(fun(a)+fun(b)+fun(c)==in){//a的火柴数+b的火柴数+c的火柴数=提供的火柴数
                	 System.out.println(a+"+"+b+"="+c);
                	 sum++;
                }              
            }         
        }
		return sum;
	}
	//计算一个数所需要的火柴数量
	public static int fun(int x){
		int num=0;//计数常亮,初始为0
		int arr[]={6,2,5,5,4,5,6,3,7,6};//储存0~9数字所需要的火柴数
		while(x/10!=0){//如果x/10的商不为0,则表示这至少是两位数		
			num+=arr[x%10];//获得x的末尾数数并将此数所需要的火柴数累加到num中
			x=x/10;//去掉末尾数,例如x的值为123,则现在x的值为12
		}
		num+=arr[x];//最后加上此时x所需要用到的火柴棍的根数(此时x一定是一位数)
		return num;	//返回需要的总火柴数
	}

}

发布了29 篇原创文章 · 获赞 8 · 访问量 920

猜你喜欢

转载自blog.csdn.net/qq_38650808/article/details/99679289
今日推荐