WILDCARD 문제 - main()에서 어떤 부분이 잘못된 것인지 알고싶습니다. drusty97 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; } } } 7년 전
1개의 댓글이 있습니다. seico75 문제는 결과를 알파벳 순으로 출력하라고 되어 있네요. 7년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
drusty97
WILDCARD 문제 관련하여 질문드립니다. 아래는 제 코드입니다. 너무 해결이 안 되어서 함수를 책에 있는 함수를 그대로 따라했는데 오류가 나더군요ㅠㅠ 책이 잘못되었을 리는 없으니 main()에서 처리를 잘못해 준 것 같은데 어느 부분이 잘못된 것인지를 모르겠습니다.
7년 전