LQBv12 Python 幻方填空

2021-10-16 09:01:46 字數 2150 閱讀 2960

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...