這題一開始把我給坑了,我還沒知道lcis的演算法,然後就慢慢搞吧,幸運的是還真寫出來了,只不過麻煩了一點。
我是將該題轉換為多條線段相交,然後找出最多多少條不相交,並且其數值死遞增的。
**如下:
#include#include#include
#include
using
namespace
std;
int dp[510][510
];int list1[510],list2[510
];struct
edgep[
510];
void
init()
intmain()}}
/*for(i=1;i<=n;i++)}}
}}
}printf(
"%d\n
",max);
if(t)
printf("\n
");}
return0;
}
正解的**有如下兩種版本,一種是一維陣列,一種二維。思想是一樣的。
#include#include#include
using
namespace
std;
int dp[510][510],a[510],b[510
];int lcis(int n,int
m) }
return
ans;
}int
main()
}
#include#include#include
using
namespace
std;
int f[510],a[510],b[510
];int lcis(int n,int
m) }
int ans=0
;
for(i=0;i<=m;i++)
ans=max(ans,f[i]);
return
ans;
}int
main()
}
最長公共遞增子串行
題目描述小h最近看了諜戰電影,對裡面訊息的加密方式很感興趣,他決定和朋友試一試,小h給朋友兩個序列,兩個序列的最長公共單調遞增子串行就是要傳遞的訊息,有時候序列太長了,小h的朋友找不出來,所以他找到了你 輸入第乙個數字n表示序列長度 後面兩行每行n個數字表示小h給出的兩個序列 n 1000 輸出輸出...
最長遞增子串行 最長公共子串行 最長公共子串
最長遞增子串行a 給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為8的陣列a,則其最長的單調遞增子串行為,長度為6.輸入描述 第一行包含乙個整數t,代表測試資料組數。對於每組測試資料 n 陣列的長度 a1 a2 an 需要計算的陣列 保證 1 n...
最長公共子串行 最長遞增子串行 最長遞增公共子串行
求最長公共子串行 int dp maxn maxn int a maxn b maxn int main else dp i j max dp i 1 j dp i j 1 printf d n dp m n return 0 輸出最長公共子串行 int dp maxn maxn int d max...