藍橋杯 幻方填空 Python

2021-10-16 09:01:46 字數 1914 閱讀 1143

題目

幻方是把一些數字填寫在方陣中,使得行、列、兩條對角線的數字之和都相等。

歐洲最著名的幻方是德國數學家、畫家迪勒創作的版畫《憂鬱》中給出的乙個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 表中有些數字已經顯露出來,還有些用...