[[problem:WILDCARD]] 문제 관련하여 질문드립니다. 아래는 제 코드입니다. 너무 해결이 안 되어서 함수를 책에 있는 함수를 그대로 따라했는데 오류가 나더군요ㅠㅠ 책이 잘못되었을 리는 없으니 main()에서 처리를 잘못해 준 것 같은데 어느 부분이 잘못된 것인지를 모르겠습니다.
#include <iostream>
#include <string>
using namespace std;
int cache[101][101] = { -1 };
string W , S;
bool matchMemoized(int w, int s) {
int& ret = cache[w][s];
if (ret != -1)
return ret;
if (s < S.size() && w < W.size() && (W[w] == '?' || S[s] == W[w])) {
return ret = matchMemoized(w + 1, s + 1);
}
if (w == W.size())
return ret = (s == S.size());
if (W[w] == '*') {
if (matchMemoized(w + 1, s) || (s < S.size() && matchMemoized(w, s + 1)))
return ret = 1;
}
return ret=0;
}
int main(void) {
int casenum, filenum;
string buffer;
cin >> casenum;
for (int i= 0; i < casenum; i++) {
if(i==0)
getline(cin,buffer);
getline(cin,W);
cin >> filenum;
getline(cin,buffer);
for (int j = 0; j < filenum; j++) {
for(int arr_x=0;arr_x<101;arr_x++)
for(int arr_y=0;arr_y<101;arr_y++)
cache[arr_x][arr_y] = -1;
getline(cin, S);
if (matchMemoized(0, 0) == true)
cout << S<<endl;
}
}
}
drusty97
[[problem:WILDCARD]] 문제 관련하여 질문드립니다. 아래는 제 코드입니다. 너무 해결이 안 되어서 함수를 책에 있는 함수를 그대로 따라했는데 오류가 나더군요ㅠㅠ 책이 잘못되었을 리는 없으니 main()에서 처리를 잘못해 준 것 같은데 어느 부분이 잘못된 것인지를 모르겠습니다.
9년 전