作業幫面試中手寫**——兩個矩陣相乘
def matrixmul(a, b):
if len(a[0]) == len(b):
res_row = len(a)
res_col = len(b[0])
res = [[0] * res_col for _ in range(res_row)]
for i in range(len(a)):
for j in range(len(b[0])):
for k in range(len(b)):
res[i][j] += a[i][k] * b[k][j]
return res
return ('輸入矩陣有誤!')
之後問我能不能進行優化,我沒有想出來,面試官提示從定址方面考慮一下。我回答可以將三層迴圈的順序更改,從而減少定址次數。
另外,我們可以在迴圈之前判斷兩個乘數中有沒有0
for i in range(len(a)):
for k in range(len(b)):
if res[i][k] != 0:
for j in range(len(b[0])):
res[i][j] += a[i][k] * b[k][j]
面試題 蛇形矩陣
輸入兩個整數n和m,輸出乙個n行m列的矩陣,將數字1到n m按照回字蛇形填充至矩陣中。具體矩陣形式可參考樣例。輸入格式 輸入共一行,包含兩個整數n和m。輸出格式 輸出滿足要求的矩陣。矩陣佔n行,每行包含m個空格隔開的整數。資料範圍 1 n,m 1001 n,m 100 輸入樣例 3 3輸出樣例 1 ...
作業幫面試題 字串的組合問題
輸入乙個字串,輸出該字串的所有組合。如 若字串為 abc,則應輸出 ab ac bc abc.當時的第一反應是遞迴,但是對終止條件一直沒想明白,面試官提示乙個字母有兩個狀態,0和1,0代表有,1代表沒有,所以我設定了乙個01陣列儲存標誌位,然後按陣列輸出。思路1 暴力法。通過舉例子,找規律可以發現當...
49 搜狗面試題 大數相乘演算法
分析 大數能大到整形型別儲存不了。須要借助於其它的演算法,來完畢乘法運算。能夠使用口算乘法的步驟來模擬乘法操作。例如以下 123 122 3 4 6 3 4 6 1 2 3 1 5 0 0 6 實現例如以下 include includeusing namespace std char mutibi...