這是一道矩陣的題目,以前沒接觸演算法的時候覺得很難。。。現在看來還可以,題目的鏈結如下:
矩形巢狀
時間限制: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...