주석처리한 부분 사용했으니 i도 j도 다음으로 넘겨줄 수 있게 되는 것 이다.......
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; #define pb push_back #define ff first #define ss second #define fast_io ios::sync_with_stdio(false),cin.tie(0),cout.tie(0) int dp[210][210]; string s1, s2, s3; int main(){ fast_io; int n; cin>>n; for(int t=1;t<=n;t++){ memset(dp, 0, sizeof dp); cout<<"Data set "<<t<<": "; cin>>s1>>s2>>s3; int n = s1.size(), m = s2.size(); for(int i=1;i<=n;i++) if(s1[i-1] == s3[i-1]) dp[i][0] = 1; for(int i=1;i<=m;i++) if(s2[i-1] == s3[i-1]) dp[0][i] = 1; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char a = s1[i-1], b = s2[j-1], c = s3[i+j-1]; if(a != c && b != c) dp[i][j] = 0; else if(a == c && b != c) dp[i][j] = dp[i-1][j]; else if(a != c && b == c) dp[i][j] = dp[i][j-1]; // 사용했으니 다음으로 넘겨줄 수 있게 된다 else dp[i][j] = dp[i][j-1] || dp[i-1][j]; } } if(dp[n][m]) cout<<"yes\n"; else cout<<"no\n"; } cout<<'\n'; }
'백준 문제 해설' 카테고리의 다른 글
17143 낚시왕 (C++) (1) | 2022.10.03 |
---|---|
5719 거의 최단 경로 (C++) (0) | 2022.10.02 |
1043 거짓말 (C++) (1) | 2022.10.01 |
12880 그래프 차이 최소 (C++) (2) | 2022.09.30 |
2473 세 용액 (C++) (2) | 2022.09.29 |
16724 피리 부는 사나이 (C++) (0) | 2022.09.28 |
3973 Time To Live (c++) (0) | 2022.08.07 |
백준 13913 메모리초과(c++) (0) | 2022.08.05 |