codeforces 1132F 구간 DP
9053 단어 구간DP
codeforces 1132F
제목:
길이가 n인 문자열을 지정하면 모든 자모가 같은 문자열을 임의의 순서로 삭제할 수 있습니다.길이가 n인 문자열을 지정하면 모든 자모가 같은 문자열을 임의의 순서로 삭제할 수 있습니다.길이가 n인 문자열을 지정하면 모든 자모가 같은 문자열을 임의의 순서로 삭제할 수 있습니다.- 모든 문자의 최소 작업 수를 삭제합니다.- 모든 문자의 최소 작업 수를 삭제합니다.- 모든 문자의 최소 작업 수를 삭제합니다.
문제 풀이:
d p [l] [r]는 구간 [l, r] 내의 모든 문자를 삭제하는 것이 가장 좋은 것을 나타낸다.dp[l][r]는 구간 [l,r]의 모든 문자를 삭제하는 것이 가장 좋은 결과를 나타낸다.dp[l][r]는 구간 [l,r]의 모든 문자를 삭제하는 것이 가장 좋은 결과를 나타낸다.
길이가 n인 문자열을 지정하면 모든 자모가 같은 문자열을 임의의 순서로 삭제할 수 있습니다.길이가 n인 문자열을 지정하면 모든 자모가 같은 문자열을 임의의 순서로 삭제할 수 있습니다.길이가 n인 문자열을 지정하면 모든 자모가 같은 문자열을 임의의 순서로 삭제할 수 있습니다.- 모든 문자의 최소 작업 수를 삭제합니다.- 모든 문자의 최소 작업 수를 삭제합니다.- 모든 문자의 최소 작업 수를 삭제합니다.
문제 풀이:
d p [l] [r]는 구간 [l, r] 내의 모든 문자를 삭제하는 것이 가장 좋은 것을 나타낸다.dp[l][r]는 구간 [l,r]의 모든 문자를 삭제하는 것이 가장 좋은 결과를 나타낸다.dp[l][r]는 구간 [l,r]의 모든 문자를 삭제하는 것이 가장 좋은 결과를 나타낸다.
#include
using namespace std;
const int N = 501;
char s[N];
int dp[N][N];
int main() {
int n;
cin >> n;
for(int i = 1 ; i <= n ; i++){
cin >> s[i];
}
for(int i = 1 ; i <= n ; i++){
dp[i][i] = 1;
}
for(int len = 2 ; len <= n ; len++){
for(int l = 1, r = len ; r <= n ; l++, r++){
if(s[l] == s[r]){
dp[l][r] = dp[l+1][r-1]+1;
}
else{
dp[l][r] = min(dp[l+1][r], dp[l][r-1])+1;
}
for(int k = l ; k <= r ; k++){
dp[l][r] = min(dp[l][r], dp[l][k]+dp[k][r]-1);
}
}
}
cout << dp[1][n] << endl;
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ2955: Brackets(구간 DP)제목: 괄호 서열을 하나 드릴게요. 괄호는 두 가지(,)와 [,](), [], (), (), (), [], ()] [()] 이 괄호가 모두 일치하는 (,),(,(,)), ([(] 이런 것은 완전히 일치하지 않는 거예...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.