题目:假设小明手上有 m 根(m<= 24)火柴棍,小明可以拼出多少个 A + B = C 的等式呢?数组 0 - 9 的拼法如下图
如 0 + 4 = 4、0 + 11 = 11 等。
思路解析:这里我们可以用到 枚举的思想,分别 枚举 A、B、C ,题目中说了火柴棍共有 24 根,除去 + 、= 占用了4根,还剩下20根;0-9之间,1占用的根数最小,可以组成10个,所以 A、B、C 的枚举范围是 1111;所以当A 占用的根数 + B 占用的根数 + C 占用的根数 恰好等于 m-4,等式就成立了。
代码解析:
public class Count_Matchstick {
private static int sum(int i) {
int num = 0;
int[] array = {6,2,5,5,4,5,6,3,7,6}; // 这里指的是每根火柴棍所占用的根数 ( 0-9)
// 做商判断,如果 i/10 不为0,说明 i>10
while(i/10!=0) {
num += array[i%10]; // 这时得到的数是 i 末尾数字,并将对比数组的根数存入 num 中
i = i/10; // 去掉 i 的末尾数字
}
// 最后再加上 i 所占用的火柴棍根数(经过上面的计算,i 一定为个位数)
num += array[i];
return num; // 共占用的火柴棍根数
}
private static void Count(int m) {
int count = 0; // 计数
for(int a=0;a<1111;a++) {
for(int b=0;b<1111;b++) {
int c = a + b;
// a + b + c = m-4
if(sum(a) + sum(b) + sum(c) == m-4) {
System.out.println(a + " + " + b + " = " + c);
count++;
}
}
}
System.out.println("一共可以拼出"+count+"个等式");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Count(18);
}
}
结果展示:
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有