参考《啊哈算法》
问题:
现在有n根火柴棍,拼出A+B=C的等式。
注意:加号和等号各自需要两根火柴棍,A不等于B,则A+B=C与B+A=C是为不同的等式,所有火柴棍必须都用上
思路:
这道题的主要难点就是怎么用数字将所需的火柴棍表示出来,之前了解过桶排序的就好解决了,写一个数字,用内容对应下标,比如0需要6根火柴那么arr[0]={6},茅厕顿开了吧
代码:
import java.util.Scanner;
public class 火柴棍 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int sum=0;
int c;
for (int i = 0; i < 1111; i++) {
//1111这个数与N的大小有关,可以写个方法算出来,这边就默认N在20之内,给估一个值
for (int j = 0; j < 1111; j++) {
c=i+j;
if (count(i)+count(j)+count(c)==n-4){
System.out.println(i+"+"+j+"="+c);
sum++;
}
}
}
System.out.println(sum+"个数");
}
public static int count(int x){
int num=0;
int[] arr={6,2,5,5,4,5,6,3,7,6};//数组判断,下标代表数,对应下标的值代表返回个数
while (x/10!=0){//如果不是个位数进入循环
num+=arr[x%10];//记录个位数的火柴数
x/=10;//去掉个位
}
num+=arr[x];//最高位
return num;
}
}
以上