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

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

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

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

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

1 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果只能跨列交換:

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


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

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


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

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


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ù)組中的最大元素,找到它們的索引,如果它們不在所需的行中,則將它們計(jì)為交換并返回交換總數(shù)。



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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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