第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

最大化 2D 數(shù)組第 n 行之和所需的最小交換次數(shù)?

最大化 2D 數(shù)組第 n 行之和所需的最小交換次數(shù)?

catspeake 2023-08-22 17:54:52
我正在嘗試不同的數(shù)組大小和元素。為了簡單起見,我采用了一個大小為 3x3 的數(shù)組。二維列表的形式如下:input_matrix = [[80,81,84],[69,80,51],[13,37,65]]那么,最好的方法是什么?如果我使用嵌套循環(huán),那么對于這種具有 O(n^2) 復雜度的簡單任務來說,這將是一種過度殺戮,我想避免這種情況。編輯1:通過求和最大化,我的意思是我可以交換數(shù)組中的元素,并且對于第一行中的每個排列,都會有不同的總和。那么,我需要多少次交換才能獲得這樣的排列,即行的總和是通過將整個數(shù)組中的元素放入第一行可以實現(xiàn)的所有可能總和的最大值
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經(jīng)驗 獲得超8個贊

如果只能跨列交換:

通過行最大化,我假設您的意思是您可以在數(shù)組中垂直交換以使行最大化。在這種情況下,可以通過 numpy 完成,如下所示:


(np.argmax(np.array(input_matrix), axis = 0)!=r).sum()

這里的技巧是找到每列的最大元素,然后如果它不在所需的行(即 r)中,則將其計為交換,因為這就是您需要交換和求和的地方。


如果您可以交換數(shù)組中的任何元素:

如果您可以從整個數(shù)組中獲取值,則需要更復雜的機制,如下所示:


def largest_indices(ary, n):

? ? """Returns the n largest indices from a numpy array."""

? ? flat = ary.flatten()

? ? indices = np.argpartition(flat, -n)[-n:]

? ? indices = indices[np.argsort(-flat[indices])]

? ? return np.unravel_index(indices, ary.shape)


(largest_indices(np.array(input_matrix), len(input_matrix[0]))[0]!=r).sum()

它繼續(xù)查找n數(shù)組中的最大元素,找到它們的索引,如果它們不在所需的行中,則將它們計為交換并返回交換總數(shù)。



查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關(guān)注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號