2013/province_c_c++_c/4/幻方填空
幻方是把一些數字填寫在方陣中,使得行、列、兩條對角線的數字之和都相等。
歐洲最著名的幻方是德國數學家、畫家迪勒創作的版畫《憂鬱》中給出的乙個4階幻方。
他把1,2,3,...16 這16個數字填寫在4 x 4的方格中。
如圖p1.jpg所示,即:
16 ? ? 13
? ? 11 ?
9 ? ? *
? 15 ? 1
表中有些數字已經顯露出來,還有些用?和*代替。
請你計算出? 和 * 所代表的數字。並把 * 所代表的數字作為本題答案提交。
解題思路:通過itertools模組令剩下的10個數進行一次全排列,利用for迴圈遍歷尋找出符合條件的情況。
**:
import itertools
list1 =[2
,3,4
,5,6
,7,8
,10,12
,14]list2 =
list
(itertools.permutations(list1,10)
)list3 =[[
16,'?',
'?',13]
,['?',
'?',11,
'?'],[
9,'?',
'?',
'*'],[
'?',15,
'?',1]
]for i in list2:
list3[0]
[1]= i[0]
list3[0]
[2]= i[1]
list3[1]
[0]= i[2]
list3[1]
[1]= i[3]
list3[1]
[3]= i[4]
list3[2]
[1]= i[5]
list3[2]
[2]= i[6]
list3[2]
[3]= i[7]
list3[3]
[0]= i[8]
list3[3]
[2]= i[9]
ifsum
(list3[0]
)==sum(list3[1]
)==sum(list3[2]
)==sum(list3[3]
)==\
sum(list3[a][0
]for a in
range(0
,4))
==\ sum
(list3[b][1
]for b in
range(0
,4))
==\ sum
(list3[c][2
]for c in
range(0
,4))
==\ sum
(list3[d][3
]for d in
range(0
,4))
==\ (
int(list3[0]
[0])
+int
(list3[1]
[1])
+int
(list3[2]
[2])
+int
(list3[3]
[3])
)==\
(int(list3[0]
[3])
+int
(list3[1]
[2])
+int
(list3[2]
[1])
+int
(list3[3]
[0])
):print
(list3[2]
[3])
break
# 輸出結果如下
12
u1s1,itertools模組解藍橋杯的題真的好用!(雖然有弊端…) 藍橋杯 幻方填空 Python
題目 幻方是把一些數字填寫在方陣中,使得行 列 兩條對角線的數字之和都相等。歐洲最著名的幻方是德國數學家 畫家迪勒創作的版畫 憂鬱 中給出的乙個4階幻方。他把1,2,3,16 這16個數字填寫在4 x 4的方格中。如圖p1.jpg所示,即 16 13 11 9 15 1 表中有些數字已經顯露出來,還...
三階幻方python解法
三階幻方 1 9共9個數字填入九宮格中,九宮格中間元素為5,各行 列 對角線元素相加和為15。求解出所有符合條件的排列。python解法1 由於九宮格中間元素已確定,剩下元素中選擇乙個數填入tmp 0 0 再選擇乙個數填入tmp 0 1 則剩下元素都可根據已填元素確定,通過兩層巢狀迴圈實現。lst ...
Python之任意階幻方的構造
本文在用python構造任意階幻方的時候,參考的資料如下 維基百科 幻方 由矩陣構造奇數階幻方的方法,高建國,河南大學學報 python 如下 具體的構造方法可參看以上資料 coding utf 8 利用numpy模組構造幻方 import numpy as np 列表迴圈向左移offset位 de...