首页 > 编程知识 正文

把1到9个数分别填入三角形的圆圈,把1-9这9个数字填入三角形

时间:2023-05-04 19:26:45 阅读:282868 作者:1122

将数字1到9填入下面圆圈里,每个数字只使用一次,使得三角形三条边之和相等。求出所有解。

O O O O OO O O O

这题目怎么解?后来才知道老师靠试的,给出了一个答案。既然靠试,这种苦差事还不如写段小程序来穷举,还能提高孩子学编程的兴趣。

思路是这样的。将所圆圈定义如下:

a0 a1 a8 a2 a7a3 a4 a5 a6

为了避免重复,令:
a0<a3<a6
a1<a2
a4<a5
a7<a8

开始编程,语言Python

#检查是否重复def unique(a): return a[0] < a[3] and a[3] < a[6] and a[1] < a[2] and a[4] < a[5] and a[7] < a[8]#验证三边和是否相等def verify(a): s = sum(a[6:]) + a[0] return sum(a[0:4]) == s and sum(a[3:7]) == s#输出解def solution(a): print(' %d' % a[0]) print(' %d %d' % (a[1], a[8])) print(' %d %d' % (a[2], a[7])) print('%d %d %d %d' % (a[3], a[4], a[5], a[6])) print('') # 空一行#用全排列搜索所有解from itertools import permutationsn = 0 #解的数量for a in permutations(range(1, 10)): if verify(a) and unique(a): n += 1 print('%d# sum=%d' % (n, sum(a[0:4]))) solution(a)

答案还不少,18个。

1# sum=17 1 5 7 9 62 4 8 32# sum=19 1 5 8 9 34 2 6 73# sum=17 1 6 9 8 42 5 7 34# sum=19 1 6 9 8 24 3 5 75# sum=20 1 6 7 8 35 2 4 96# sum=20 2 4 7 9 35 1 6 87# sum=19 2 5 6 9 43 1 8 78# sum=20 2 6 9 7 15 3 4 89# sum=19 2 6 9 8 13 4 5 710# sum=21 3 2 6 9 47 1 5 811# sum=20 3 4 9 8 15 2 6 712# sum=21 3 4 7 8 26 1 5 913# sum=21 3 5 9 6 17 2 4 814# sum=21 3 5 8 7 16 2 4 915# sum=20 4 2 7 9 35 1 8 616# sum=20 4 3 9 8 15 2 7 617# sum=23 7 2 4 6 38 1 5 918# sum=23 7 3 6 5 18 2 4 9

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。