題目
幻方是把一些數字填寫在方陣中,使得行、列、兩條對角線的數字之和都相等。
歐洲最著名的幻方是德國數學家、畫家迪勒創作的版畫《憂鬱》中給出的乙個4階幻方。
他把1,2,3,...16 這16個數字填寫在4 x 4的方格中。
如圖p1.jpg所示,即:
16 ? ? 13
? ? 11 ?
9 ? ? *
? 15 ? 1
表中有些數字已經顯露出來,還有些用?和*代替。
請你計算出? 和 * 所代表的數字。並把 * 所代表的數字作為本題答案提交。
#幻方填空 12
defisms
(array)
:# 先定義乙個判斷是否為幻方的函式
for i in
range(4
):ifsum
(array[i])!=
34:#判斷行數的和是否相等
return
false
for j in
zip(array[0]
,array[1]
,array[2]
,array[3]
):#判斷列數的和是否相等
ifsum
(j)!=34:
return
false
ifsum
([array[0]
[0],array[1]
[1],array[2]
[2],array[3]
[3]]
)!=34:
#判斷做對角線是否相等
return
false
ifsum
([array[0]
[3],array[1]
[2],array[2]
[1],array[3]
[0]]
)!=34:
#判斷右對角線是否相等
return
false
return
true
import itertools
array =
[# 為了在isms()中呼叫zip()更好的解決問題[16
,0,0
,13],
# 在這裡我們把幻方的結構設定為矩陣而非一元陣列[0
,0,11
,0],
[9,0
,0,0
],[0
,15,0
,1]]
num_lst =[2
,3,4
,5,6
,7,8
,10,12
,14]position_lst =
# 通過乙個小迴圈獲取要填寫的位置
for i in
range(4
):for j in
range(4
):if array[i]
[j]==0:
(i, j)
)for num_tpl in itertools.permutations(num_lst)
:for cnt,
(i, j)
inenumerate
(position_lst)
: array[i]
[j]= num_tpl[cnt]
if isms(array)
:print
(array[2]
[3])
break
12
藍橋杯 幻方填空 dfs 窮竭搜尋
全排列,暴力check 用手生敲,畢竟搞對映 量也少不到 去 配合草稿紙畫就完事了 打個純暴力可能也就10min 但是能騙出一道填空題 qaq也許搜尋會寫得更優美 然而 然而考場還是時間要緊叭 騙分主義.jpg include include include includeusing namespa...
第四屆藍橋杯 幻方填空
問題描述 幻方是把一些數字填寫在方陣中,使得行 列 兩條對角線的數字之和都相等。歐洲最著名的幻方是德國數學家 畫家迪勒創作的版畫 憂鬱 中給出的乙個4階幻方。他把 1,2,3,16 這16個數字填寫在 4 x 4 的方格中。表中有些數字已經顯露出來,還有些用 和 代替。請你計算出 和 所代表的數字。...
藍橋杯每日一題(11) 幻方填空(python)
topic 幻方是把一些數字填寫在方陣中,使得行 列 兩條對角線的數字之和都相等。歐洲最著名的幻方是德國數學家 畫家迪勒創作的版畫 憂鬱 中給出的乙個4階幻方。他把1,2,3,16 這16個數字填寫在4 x 4的方格中。如圖所示,即 16 13 11 9 15 1 表中有些數字已經顯露出來,還有些用...