二維數組,首項和確定,求第二項和的最大值
有如下數組
<code>items = [[1,10], [3,15], [4,12], [2,9], [3, 17] ....] </code>
從items中取出4個,要求item[0]和為10,求item[1]和的最大值。
有無最優解?
回覆內容:
有如下數組
<code>items = [[1,10], [3,15], [4,12], [2,9], [3, 17] ....] </code>
從items中取出4個,要求item[0]和為10,求item[1]和的最大值。
有無最優解?
由於思路停留在背包問題,代碼確實出現了bug
,即數量4
滿足,但總和為10
並沒有滿足,實際情況是……
原答案:
這個問題看似是個背包問題,其實比背包的條件更苛刻。
每個item
的兩個數字可以分別對應背包問題裡的weight(重量)
和value(價值)
,但與背包不同的是:
1.眾多
item
只能選4
個,即背包裡只能裝4
個物品。
2.總重量嚴格要求等於10
,而非小於等於10
。
所以傳統的動態規劃和貪心演算法我暫時沒能想到對應的解法,我在這裡給出一段演算法,借鑒了貪心的思路,但有所不同:
呃,不過說實話,我對自己這段程式碼1.將
items
依照item[1]
的大小降序排列。
2.遍歷items
,併計算取得的item[0]
的和,若大於10
,continue
,否則添加斤最終結果result
中,直到取出個
【沒有信心,不能保證最優解】,只是一個思路,所以還請其他諸位大神多提提意見。 ^0^
<code># coding=utf-8 # python2.7.9 def func(): items = [[1,10], [3,15], [4,12], [2,9], [3, 17], [5, 1], [7, 22], [2, 8], [4, 6]] # 按照item[1]降序排列 items = sorted(items, key=lambda item: item[1], reverse=True) result = [] # 总和 total = 10 # 总数 count = 4 for item in items: # item[0]的最大取值 limit = total - count if item[0] > limit: continue result.append(item) total = total - item[0] count = 4 - len(result) if count < 1 or total < 1: break print result func()</code>
<code>[[3, 17], [3, 15], [1, 10], [2, 9]]</code>
依照樓上改了以下,不保證正確。 。 。
<code># coding=utf-8 def func(): items = [[1,10], [3,15], [4,12], [2,9], [3, 17], [5, 1], [7, 22], [2, 8], [4, 6]] # 按照item[1]降序排列 items = sorted(items, key=lambda item: item[1]) print(findMaxItems(10,items,4)) def findMaxItems(sum,items,count): if sum <= 0: return [] if count == 1: return findMaxItem(sum,items) while len(items) > 0: item = items.pop() left_items = findMaxItems(sum - item[0],items[:],count - 1) if len(left_items) == (count - 1): left_items.append(item) return left_items return [] def findMaxItem(value,items): max = None; for item in items: if item[0] == value: if max == None or item[1] > max[1]: max = item if max == None: result = [] else: result = [max] return result func()</code>
<code>[[2, 8], [2, 9], [3, 15], [3, 17]]</code>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP是一種服務器端腳本語言,用於動態網頁開發和服務器端應用程序。 1.PHP是一種解釋型語言,無需編譯,適合快速開發。 2.PHP代碼嵌入HTML中,易於網頁開發。 3.PHP處理服務器端邏輯,生成HTML輸出,支持用戶交互和數據處理。 4.PHP可與數據庫交互,處理表單提交,執行服務器端任務。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。
