Search
Duplicate
๐Ÿฅ‡

LCS 3

์ฃผ์ฐจ
13
๋ฌธ์ œ๋ฒˆํ˜ธ
1958
์–ธ์–ด
ํ‹ฐ์–ด
๊ณจ๋“œ
์œ ํ˜•
DP
nj_Blog
O
nj_์ƒํƒœ
์™„๋ฃŒ
์ดํ•ด๋„
ํ’€์ด
์‚ฌ๋žŒ
์ดํ•ด๋„ 2
13 more properties

๋ฌธ์ œ๋งํฌ

์ฝ”๋“œ ์ œ์ถœ ๊ธฐ๋ก (๋ฉ”๋ชจ๋ฆฌ ๋ฐ ์‹œ๊ฐ„)

๋ฉ”๋ชจ๋ฆฌ : 6044KB
์‹œ๊ฐ„ : 4ms

Code

#include <iostream> #include <algorithm> std::string str1,str2,str3; int dp[101][101][101]; void input_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { std::cin >> str1 >> str2 >> str3; } void solve() { for (int i = 1 ; i <= str1.size(); i++) { for (int j = 1 ; j <= str2.size(); j++) { for (int k = 1 ; k <= str3.size(); k++) { if (str1[i - 1] == str2[j - 1] && str2[j - 1] == str3[k - 1]) dp[i][j][k] = dp[i - 1][j - 1][k - 1] + 1; else dp[i][j][k] = std::max(std::max(dp[i - 1][j][k], dp[i][j - 1][k]), dp[i][j][k - 1]); } } } } void print_val() { std::cout << dp[str1.size()][str2.size()][str3.size()]; } int main() { input_faster(); input(); solve(); print_val(); return (0); }
C++
๋ณต์‚ฌ

๋ฉ”๋ชจ

โ€ข
LCS(LCS(str1, str2), str3) ๋กœ ํ•˜๋ฉด ์•ˆ๋จ...ใ… ใ… 
โ€ข
LCS2 ์˜ ์ฝ”๋“œ์—์„œ 3์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝ๋งŒ ํ•˜๋ฉด ๋จ (3์ค‘ for๋ฌธ)
โœ“ [i-1][j-1][k] ์ผ ๋•Œ๋Š” ์•ˆํ•ด๋„ ๋˜๋Š”๊ฑด๊ฐ€?