Python 演算法面試題的一些分享

2021-09-24 14:54:12 字數 1572 閱讀 4776

給定一組數字, 一組有9個數字,將這9個數字填寫到33 的九宮格內;使得橫,豎,斜對角一條線上的三個數字之和相等;如果無解則列印無解;

參考這位老哥的c語言寫法,用python3再實現一遍

# 時間複雜度為 o(n)

def nine(input_list=[1, 2, 3, 4, 5, 6, 7, 8, 9]):

t_array = [[0 for i in range(3)] for j in range(3)] # 生成空陣列 3 * 3

x, y = 0, 1

t_array[x][y] = input_list[0]

k = 1

while k < 9:

x_new = x - 1

y_new = y + 1

if x_new < 0: x_new = 2

if y_new > 2: y_new = 0

if t_array[x_new][y_new] != 0: # 判定該處是否已盡填充值

x_new = x + 1

y_new = y

t_array[x_new][y_new] = input_list[k]

x = x_new

y = y_new

k += 1

row1 = t_array[0][0] + t_array[0][1] + t_array[0][2]

row2 = t_array[1][0] + t_array[1][1] + t_array[1][2]

row3 = t_array[2][0] + t_array[2][1] + t_array[2][2]

col1 = t_array[0][0] + t_array[1][0] + t_array[2][0]

col2 = t_array[0][1] + t_array[1][1] + t_array[2][1]

col3 = t_array[0][2] + t_array[1][2] + t_array[2][2]

dig1 = t_array[0][0] + t_array[1][1] + t_array[2][2]

dig2 = t_array[2][0] + t_array[1][1] + t_array[0][2]

if row1 == row2 and row1 == row3 and row1 == col1 and row1 == col2 and row1 == col3 and row1 == dig1 and row1 == dig2:

print(t_array)

else:

print("無解!!!")

if __name__ == "__main__":

input_list = input("請輸入列表:") # 輸入九個數字

"""輸入格式:1,2,3,4,5,6,7,8,9 """

input_list = sorted([int(i) for i in input_list.split(",")]) # 將輸入轉換為列表並正序排列

nine(input_list=input_list) # 有預設值供測試

Python 一些面試題

1.寫出以下結果 print 1 2 and 2 2 print 1 2 and 2 1 print 1 2 and 2 2 結果 true false false 解 18.xrange和range的區別?答案 這個題的環境應該放在python2.x中,因為python3中將xrange和rang...

一些Python的面試題(一)

1.列表和元組 列表 list 可變型別,建立後可以對錶內元素進行修改 列表表示的順序,通常是同一型別的物件,如 a 1,2,3 元組 tuple 不可變型別,一旦建立就不能進行更改 元組表示結構,可以用來儲存不同型別的元素,如 b 1,2 3,4 注意,雖然元組內不可改變,但是元組內列表可以改變,...

一些面試題

q 您在什麼情況下會用到虛方法?它與介面有什麼不同?a 當在繼承類中想重寫某一方法時會用到虛方法 虛方法是類的成員函式,介面相當於抽象類.q override與過載有什麼區別?a override 就是覆蓋的意思,覆蓋父類的同名方法,而過載則是通過參數列來呼叫方法.q 值型別與引用型別有什麼區別?a...