halisi7

一个专注技术的组织

0%

火柴棍等式-c语言

问题:

Snipaste_2022-01-11_10-30-09

Snipaste_2022-01-11_10-30-24

  • 规定时限为1s。
  • 规定最多有24根火柴。

分析:

Snipaste_2022-01-11_10-33-30

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

int pun(int a) {
int n, sum = 0;
int f[10] = { 6,2,5,5,4,5,6,3,7,6 };
while (a / 10 != 0) {//如果a不是只有一位数的话
n = a % 10;//取得个位数
sum += f[n];//取得这个个位数用了几根火柴
a = a / 10;
}
sum += f[a];//最后再加上最后的一个数的火柴
return sum;
}
int main() {
int sum, i, j,n,m;
sum = 0;
printf("你有几根火柴?");
scanf_s("%d",&n);//读取火柴数
for(i=0;i<=1111;i++)//枚举
for (j = 0; j <= 1111; j++) {
m = i + j;

if (pun(m) + pun(i) + pun(j) == n - 4) {
printf("%d + %d = %d \n", i, j, m);
sum++;
}
}
printf("一共有可以拼出 %d 个等式。", sum);
getchar(); getchar();
return 0;
}

输入:

1
你有几根火柴?18

输出:

1
2
3
4
5
6
7
8
9
10
0 + 4 = 4
0 + 11 = 11
1 + 10 = 11
2 + 2 = 4
2 + 7 = 9
4 + 0 = 4
7 + 2 = 9
10 + 1 = 11
11 + 0 = 11
一共有可以拼出 9 个等式。

总结:

  • 使用枚举即可。
打赏一下作者~ ฅ( ̳• ◡ • ̳)ฅ