런타임오류(RTE) 검토 부탁드립니다. kwangswei 으으.. 3시간 째 컴파일&런타임 오류로 씨름 중이네요. 조언 부탁 드립니다. ㅡ.ㅜ 런타임오류 페이지 바로가기 문제는 WILDCARD 입니다. 제가 생각한 솔루션은, 1. 기저사례 pattern 이 * 만 남거나, pattern 길이가 0이면 input 길이도 0이면 성공, 그 외는 실패 pattern 이 * 일 경우, 1) input 의 한 문자를 할당하고 나머지 문자열에 대해서 매칭 여부 확인. 2) 공백으로 간주하여 나머지 패턴에 대해서 문자열과 매칭 여부 확인. pattern 이 * 이 아닌 경우 ? 거나 pattern[0] 과 input[0] 이 같으면 pattern[1:], input[1:] 이 매칭되는지 확인. 도움 부탁 드립니다! 감사합니다. #include <cstdio> #include <iostream> #include <map> using namespace std; enum {NONE, TRUE, FALSE}; map< pair<string, string>, int> cache; int IsMatched(string pattern, string input) { if ( pattern.compare("*") == 0 ) return TRUE; if ( pattern.length() == 0 ) return input.length() == 0 ? TRUE : FALSE; int& ret = cache[pair<string,string>(pattern, input)]; if ( ret != NONE ) return ret; ret = FALSE; if ( pattern[0] == '*' ) { if ( input.length() > 0 && IsMatched(pattern, input.substr(1)) == TRUE ) ret = TRUE; else if ( IsMatched(pattern.substr(1), input) == TRUE ) ret = TRUE; } else if ( pattern[0] == '?' || pattern[0] == input[0] ) ret = IsMatched(pattern.substr(1), input.substr(1)); return ret; } int main() { int T; cin >> T; while ( T-- ) { cache.clear(); string pattern; cin >> pattern; int inputCnt; cin >> inputCnt; for ( int i = 0; i < inputCnt; i++ ) { string inputStr; cin >> inputStr; if ( IsMatched(pattern, inputStr) == TRUE ) cout << inputStr << endl; } } return 0; } 11년 전
1개의 댓글이 있습니다. kwangswei 찾았습니다!!! 입력으로 pattern('?'), input('') 을 넣으면 문제가 발생하는군요!! 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
kwangswei
으으.. 3시간 째 컴파일&런타임 오류로 씨름 중이네요.
조언 부탁 드립니다. ㅡ.ㅜ
런타임오류 페이지 바로가기
문제는 WILDCARD 입니다.
제가 생각한 솔루션은,
1. 기저사례
도움 부탁 드립니다!
감사합니다.
11년 전