원주율구하기 문제 계속 오답으로 뜹니다. 송광혁 #include <iostream> #include <vector> #include <string> using namespace std; string now; int cache[1000]; int value(int start, int end) { string tmp = now.substr(start,end); if(tmp == string(tmp.size(),tmp[0])) { return 1; } for(int i=1;i+1<=tmp.size();i++) { if(tmp[i] - tmp[i-1] == tmp[i+1] - tmp[i]) { if((tmp[i]-tmp[i-1] == 1 && tmp[i+1]-tmp[i] == 1) || (tmp[i]-tmp[i-1] == -1 && tmp[i+1]-tmp[i] == -1)) { return 2; } else { return 5; } } } int no3=true; for(int i = 0; i<tmp.size();i++) { if(tmp[i] != tmp[i%2]) no3 = false; } if(no3 ==true) { return 4; } return 10; } int divide(int start) { if(start == now.size()) return 0; int& ret = cache[start]; if(ret != -1) return ret; ret=99999999; for(int there = 3; there < 6; there++) { if(there+start <= now.size()) { ret = min(ret,divide(there+start) + value(start,there+start)); } } return ret; } int main() { vector<string> arr; int howmuch; string s; cin >> howmuch; while(howmuch--) { cin >> s; arr.push_back(s); } //cout << arr[1] << endl; for(int i=0;i<arr.size();i++) { memset(cache,-1,sizeof(cache)); now = arr[i]; int result = divide(0); printf("%d\n",result); result=0; } } 메모리초과나 시간초과가 아니라 오답이 뜨는 이유를 모르겠습니다. 6년 전
0개의 댓글이 있습니다. 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
송광혁
메모리초과나 시간초과가 아니라 오답이 뜨는 이유를 모르겠습니다.
6년 전