演算法分析課作業

2022-04-11 01:02:22 字數 3224 閱讀 9174

求陣列中最大的最小數之差:

法一:

temp = [58, 65, 32, 100, 12, 20, 87, 3, 88

]temp.sort()

print(temp)

print(temp.pop() - temp[0

])#結果

[3, 12, 20, 32, 58, 65, 87, 88, 100

]97

法二:

temp = [58, 65, 32, 100, 12, 20, 87, 3, 88

]print(max(temp) -min(temp))

#結果:

97

ps:實在想不出還有什麼更簡單的方法了!!!

第二題:

#字元,數字,是否是數字的最高位

char_item =[

['w', -1, true], ['

d', -1, true], ['

o', -1, false],

['t', -1, false], ['

g', -1, true], ['

l', -1, false],

['e', -1, false], ['

c', -1, false], ['

m', -1, false],]#

value,used

char_value =[

[0, false], [1, false], [2, false], [3, false], [4, false],

[5, false], [6, false], [7, false], [8, false], [9, false]]#

判斷數值是否有效

defisvaluevaild(ciitem, cvitem):

if cvitem[0] ==0:

ifuse_my_isvalue:

if ciitem[0] == 'w'

or ciitem[0] == 'd'

or ciitem[0] == 'g'

:

return

false

else

:

return

not ciitem[2]

return

not cvitem[1]

#獲取對應的整數

defmakeintegervalue(ci, string):

strlen = string.__len__

() res =0

for i in range(0, strlen, 1):

for item in

ci:

if string[i] ==item[0]:

res *= 10res += item[1]

return

res#

判斷數值是否正確的**函式

defoncharlistready(ci):

minuend = "

wwwdot

"subtrahead = "

google

"diff = "

dotcom

"m =makeintegervalue(ci, minuend)

s =makeintegervalue(ci, subtrahead)

d =makeintegervalue(ci, diff)

if (m - s) ==d:

print(str(m) + "

-" + str(s) + "

=" +str(d))

defsearchresult(ci, cv, index, callback):

max_char_count = ci.__len__

() max_number_count = cv.__len__

()

if index ==max_char_count:

callback(ci)

return

for i in range(0, max_number_count, 1):

ifisvaluevaild(ci[index], cv[i]):

cv[i][1] = true #

設定使用標誌

ci[index][1] =cv[i][0]

searchresult(ci, cv, index + 1, callback)

cv[i][1] = false #

清除使用標誌

if__name__ == '

__main__':

print("

有乙個由字元組成的等式。wwwdot-google=dotcom,每個字元代表乙個0~9之間的數字,""

wwwdot、google和dotcom都是合法的數字,不能以0開頭。""

請找出一組字元和數字的對應關係,使它們互相替換,並且替換後的數字能夠滿足等式。")

print("

解答:"

) start =time.clock()

searchresult(char_item, char_value, 0, oncharlistready)

end =time.clock()

print("

使用了: %f s

" % (end - start))

輸出結果:

有乙個由字元組成的等式。wwwdot-google=dotcom,每個字元代表乙個0~9之間的數字,wwwdot、google和dotcom都是合法的數字,不能以0開頭。請找出一組字元和數字的對應關係,使它們互相替換,並且替換後的數字能夠滿足等式。

解答:777589-188103=589486

777589-188106=589483使用了: 48.331373 s

毛老師演算法分析課作業快速排序法

演算法描述 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。coding utf 8 time 18 9 18 上午11 00 author guo zhengbing email ...

演算法課作業 回溯法

7 2 子集和問題 20分 7 3 馬周遊問題 60分 返回主目錄 圖k 著色問題是乙個著名的np完全問題。給定無向圖g v,e 和正整數k,問可否用k種顏色為v中的每個結點分配一種顏色,使得不會有兩個相鄰結點具有同一種顏色?該問題的乙個具體例項可能會有多個解 乙個解就是一種合法的著色方案 要求計算...

演算法課作業 歸納技術

2 2 前t個組合結果 20分 2 3 排列還原 25分 2 4 行列式的計算 20分 返回主目錄 請編寫程式輸出前n個正整數的全排列 n 10 並通過9個測試用例 即n從1到9 觀察n逐步增大時程式的執行時間。輸入格式 輸入給出正整數n 10 輸出格式 輸出1到n的全排列。每種排列佔一行,數字間無...