六角星问题---蓝桥杯练习
生活随笔
收集整理的這篇文章主要介紹了
六角星问题---蓝桥杯练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天又是被卷的一天,回看這篇博客,覺得自己好蠢
題目描述
如下圖所示六角形中,填入 11 ~ 1212 的數字。使得每條直線上的數字之和都相同。
圖中,已經替你填好了 33 個數字,請你計算星號位置所代表的數字是多少?
思路
很明顯的一道排列組合問題,通過不同的填寫順序,最后的到需要的組合
需要注意的是一共有六條直線,切每條直線上數字之和是相等的。如果要將六條線的和加在一起,每個數字都將被使用兩次,所以可以求出每條線的和是多少。
省略代碼,結果為 26
之后我們就可以使用排列組合求解了,此處我用的笨方法,用空間換時間,通過八個for循環加判斷
nums_1=[2,4,5,6,7,9,10,11,12] nums_2=[] nums_3=[] nums_4=[] nums_5=[] nums_6=[] nums_7=[] nums_8=[] nums_9=[] for i_1 in range(len(nums_1)):num_1=nums_1[i_1]nums_2.clear()for i in range(len(nums_1)):nums_2.append(nums_1[i])del nums_2[i_1]for i_2 in range(len(nums_2)):num_2=nums_2[i_2]nums_3.clear()for i in range(len(nums_2)):nums_3.append(nums_2[i])del nums_3[i_2]for i_3 in range(len(nums_3)):num_3=nums_3[i_3]nums_4.clear()for i in range(len(nums_3)):nums_4.append(nums_3[i])del nums_4[i_3]if 8+num_1+num_2+num_3!=26:continuefor i_4 in range(len(nums_4)):num_4=nums_4[i_4]nums_5.clear()for i in range(len(nums_4)):nums_5.append(nums_4[i])del nums_5[i_4]for i_5 in range(len(nums_5)):num_5=nums_5[i_5]nums_6.clear()for i in range(len(nums_5)):nums_6.append(nums_5[i])del nums_6[i_5]if 1+num_2+num_4+num_5!=26:continuefor i_6 in range(len(nums_6)):num_6=nums_6[i_6]nums_7.clear()for i in range(len(nums_6)):nums_7.append(nums_6[i])del nums_7[i_6]if num_6+num_3+num_4+3!=26:continuefor i_7 in range(len(nums_7)):num_7=nums_7[i_7]nums_8.clear()for i in range(len(nums_7)):nums_8.append(nums_7[i])del nums_8[i_7]for i_8 in range(len(nums_8)):num_8=nums_8[i_8]nums_9.clear()for i in range(len(nums_8)):nums_9.append(nums_8[i])del nums_9[i_8]if num_8+num_7+num_6+num_5==26 and num_8+nums_9[0]+1+num_1==26:print(nums_9[0])else:continue最后答案是10
編碼不易,點個贊支持一下吧 ~ ~ ~
總結
以上是生活随笔為你收集整理的六角星问题---蓝桥杯练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: E类直流-直流变换器 Matlab si
- 下一篇: Qt编程之超级玛丽