fgdf

#include <iostream> #include <set> #include <string> using namespace std; string s1,s2,f[82][82]; int n,m; set<char> s; void in() { cin >> s1 >> s2; n = s1.size() + 1, m = s2.size() + 1; s.insert('?'); s.insert('*'); } void granics() { for (int i = 1; i < n; i++) { if (s1[i-1] == '*') { f[i][0] = f[i-1][0]; } else if (s1[i-1] == '?') { f[i][0] = f[i-1][0] + 'A'; } else { f[i][0] = f[i-1][0] + s1[i-1]; } } for (int i = 1; i < m; i++) { if (s2[i-1] == '*') { f[0][i] = f[0][i-1]; } else if (s2[i-1] == '?') { f[0][i] = f[0][i-1] + 'A'; } else { f[0][i] = f[0][i-1] + s2[i-1]; } } } void TwoLetter(int i, int j) { if (s1[i-1] == s2[j-1]) { if (f[i-1][j-1] == "No solution!") { f[i][j] = "No solution!"; } else { f[i][j] = f[i-1][j-1] + s1[i-1]; } } else { f[i][j] = "No solution!"; } } void TwoQuestion(int i, int j) { f[i][j] = f[i-1][j-1] + 'A'; } void TwoStar(int i, int j) { if (f[i][j-1].size() < f[i-1][j].size()) { f[i][j] = f[i][j-1]; } else { f[i][j] = f[i-1][j]; } } void QuestionLetter(int i, int j) { f[i][j] = f[i-1][j-1] + s2[j-1]; } void LetterQuestion(int i, int j) { f[i][j] = f[i-1][j-1] + s1[i-1]; } void StarLetter(int i, int j) { if (f[i][j-1].size() < f[i-1][j].size()) { f[i][j] = f[i][j-1] + s2[j-1]; } else { f[i][j] = f[i-1][j] + s2[j-1]; } } void LetterStar(int i, int j) { if (f[i][j-1].size() < f[i-1][j].size()) { f[i][j] = f[i][j-1] + s1[i-1]; } else { f[i][j] = f[i-1][j] + s1[i-1]; } } void StarQuestion(int i, int j) { if (f[i][j-1].size() < f[i-1][j].size()) { f[i][j] = f[i][j-1] + 'A'; } else { f[i][j] = f[i-1][j] + 'A'; } } void out() { /* for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << f[i][j] << "\t\t"; } cout << "\n"; }*/ cout << f[n-1][m-1] << "\n"; } int main () { in(); granics(); for (int i = 1; i < n; i++) { for (int j = 1; j < m; j++) { if (s.find(s1[i-1]) == s.end() && s.find(s2[j-1]) == s.end()) { TwoLetter(i,j); } else if (s1[i-1] == '?' && s2[j-1] == '?') { TwoQuestion(i,j); } else if (s1[i-1] == '*' && s2[j-1] == '*') { TwoStar(i,j); } else if (s1[i-1] == '?' && s.find(s2[j-1]) == s.end()) { QuestionLetter(i,j); } else if (s2[j-1] == '?' && s.find(s1[i-1]) == s.end()) { LetterQuestion(i,j); } else if (s1[i-1] == '*' && s.find(s2[j-1]) == s.end()) { StarLetter(i,j); } else if (s2[j-1] == '*' && s.find(s1[i-1]) == s.end()) { LetterStar(i,j); } else if (s1[i-1] == '*' && s2[j-1] == '?') { StarQuestion(i,j); } else if (s1[i-1] == '?' && s2[j-1] == '*') { StarQuestion(i,j); } } } out(); return 0; }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.