NYOJ 16 矩陣巢狀(動態規劃思想)

2021-07-15 19:56:22 字數 921 閱讀 6008

這是一道矩陣的題目,以前沒接觸演算法的時候覺得很難。。。現在看來還可以,題目的鏈結如下:

矩形巢狀

時間限制:3000 ms | 記憶體限制:65535 kb

難度:4

描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x(a,b)可以巢狀在矩形y(c,d)中當且僅當a

#include 

#include

#include

#include

using

namespace

std;

//這題的狀態就是到當前矩陣,它能包含的最多的矩陣

//狀態轉移就是,dp(i) = max(1, dp(j)+1)

int b[1000];//長

int k[1000];//寬

int g[1000][1000];

int vis[1000];//存的值就是dp(i)的值,剛開始初始化為-1表示沒有被訪問過;

int n;

int dp(int i)

int main()

for(int i = 0 ; i < n ; i++)

for(int j = 0 ; j < n ; j++)

if(k[i] > k[j] && b[i] > b[j])

g[i][j] = 1;//如果兩個矩陣可以巢狀就是第i個矩陣可以包含第j個矩陣,

//或者說第j個矩陣可以巢狀到第i個矩陣,就是題目的兩種說法,則讓g[i][j] = 1

for(int i = 0 ; i < n ; i++)

res = max(res, dp(i));//選擇乙個最大的值最為最終的答案;

cout

<< res << endl;

}return

0;}

NYOJ 16 矩形巢狀(動態規劃)

矩形巢狀 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a參考最長上公升子串行長度 狀態轉移方程dp i max dp i dp j 1 include include ...

NYOJ 16 矩形巢狀(動態規劃)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入 第一行是乙個正正數n 0輸出 每組測試資料都輸出乙個數,表示最多符合條件的矩形數目,每組輸出佔一行 樣例輸入 1 ...

NYOJ 16 矩形巢狀(動態規劃)

矩形巢狀 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述有n個矩形,每個矩形可以用a,b來描述,表示長和寬。矩形x a,b 可以巢狀在矩形y c,d 中當且僅當a 輸入第一行是乙個正正數n 0 每組測試資料的第一行是乙個正正數n,表示該組測試資料中含有矩形的個數 n 1000...