1035 不相交的線(二維動態規劃)

2022-09-14 19:36:15 字數 1227 閱讀 1882

在兩條獨立的水平線上按給定的順序寫下 nums1 和 nums2 中的整數。

現在,可以繪製一些連線兩個數字 nums1[i] 和 nums2[j] 的直線,這些直線需要同時滿足滿足:

nums1[i] == nums2[j]

且繪製的直線不與任何其他連線(非水平線)相交。

請注意,連線即使在端點也不能相交:每個數字只能屬於一條連線。

以這種方法繪製線條,並返回可以繪製的最大連線數。

/*

* * @param nums1

* @param nums2

* @return */

var maxuncrossedlines = function

(nums1, nums2)

else}}

return

dp[m][n];

};let nums1 = [1,4,2], nums2 = [1,2,4]

console.log(nums1, nums2, maxuncrossedlines(nums1, nums2));

nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]

console.log(nums1, nums2, maxuncrossedlines(nums1, nums2));

nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]

console.log(nums1, nums2, maxuncrossedlines(nums1, nums2));

示例 1:

輸入:nums1 = [1,4,2], nums2 = [1,2,4]

輸出:2

解釋:可以畫出兩條不交叉的線,如上圖所示。 

但無法畫出第三條不相交的直線,因為從 nums1[1]=4 到 nums2[2]=4 的直線將與從 nums1[2]=2 到 nums2[1]=2 的直線相交。

示例 2:

輸入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]

輸出:3

示例 3:

輸入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]

輸出:2

1 <= nums1.length <= 500

1 <= nums2.length <= 500

1 <= nums1[i], nums2[i] <= 2000

二維陣列 動態規劃

簡要描述 給定乙個m行n列的矩陣 m n個格仔 每個格仔中放著一定數量的平安果。你從左上角的各自開始,只能向下或者向右走,目的地是右下角的格仔。每走過乙個格仔,就把格仔上的平安果都收集起來。求你最多能收集到多少平安果。注意 當經過乙個格仔時,需要一次性把格仔裡的平安果都拿走。1 n,m 50 每個格...

演算法篇 二維動態規劃問題

題目 給定乙個nxm的矩陣a和乙個整數k,小hi希望你能求出其中最大 元素數目最多 的子矩陣,並且該子矩陣中所有元素的和不超過k。input 第一行包含三個整數n m和k。以下n行每行包含m個整數,表示a。對於40 的資料,1 n,m 10 對於100 的資料,1 n,m 250 1 k 21474...

二維費用的揹包問題(動態規劃)

二維費用的揹包問題 有 n n 件物品和乙個容量是 v v 的揹包,揹包能承受的最大重量是 m m 每件物品只能用一次。體積是 v i vi 重量是 m i mi 價值是 w i wi 求解將哪些物品裝入揹包,可使物品總體積不超過揹包容量,總重量不超過揹包可承受的最大重量,且價值總和最大。輸出最大價...