WEIRD 문제 풀이 도움 부탁드립니다. dacchur 아래 코드와 같이 구현했는데요. 계속 오답이라고 나오네요. 가지고 있는 샘플로는 답이 맞는데, 계속적으로 오답이라 어디가 틀렸는지를 모르겠습니다. 도움 부탁드리겠습니다. 조합을 사용하여 각 원소들의 합을 더한후 입력값과 비교했고요. 조건도 맞는거 같은데, 고수님들 도와주세요~ #include <iostream> #include <list> using namespace std; int N; bool judge; bool Addresult(int* result, int size){ int total = 0; for(int i=0;i<size;i++){ total += result[i]; } if(total == N) return true; else return false; } void Combination(int n, int r, int original_r, int* temp_result, int* src) { if ( r == 0 ){ if(Addresult(temp_result, original_r)) judge = true; } else if ( n < r ) { return; } else { temp_result[r-1] = src[n-1]; Combination(n-1, r-1, original_r,temp_result,src); Combination(n-1, r, original_r,temp_result,src); } } bool Judge(int size, int* tmp_arr, int* arr){ judge = false; for(int i=3; i<size;i++){ Combination(size,i,i,tmp_arr,arr); if(judge == true){ return true; } } return false; } int main() { int cmd_cnt = 0; cin >> cmd_cnt; while(cmd_cnt--) { list<int> arrInt; cin >> N; int* pArr = 0; int cnt = 0; int total = 0; for(int i = 1; i<N/2+1; i++){ if(N%i == 0){ arrInt.push_back(i); } } pArr = new int[arrInt.size()]; list<int>::iterator it = arrInt.begin(); list<int>::iterator it_end = arrInt.end(); for(it; it != it_end; it++){ pArr[cnt++] = *it; total += *it; } if(total <= N){ cout << "not_weird" << endl; continue; } int* pTmp = new int[cnt]; if(Judge(cnt,pTmp,pArr)){ cout << "not weird" << endl; } else { cout << "weird" << endl; } delete[] pTmp; delete[] pArr; } return 0; } 11년 전
3개의 댓글이 있습니다. Kureyo 코드은 자세히 안읽어봤는데.. cout << "not_weird" << endl; _가 빠져야할거같네요 11년 전 link Being 슬쩍 봤는데 왠지 중간에 문자열 하나랑 그 앞 조건 부등호가 의심이 가는데요 ㅎㅎ 11년 전 link dacchur 아~ 감사합니다. 문자열 문제였네요.^^ 눈이 어두워서..ㅠㅠ 답변들 감사합니다. 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
dacchur
아래 코드와 같이 구현했는데요.
계속 오답이라고 나오네요.
가지고 있는 샘플로는 답이 맞는데,
계속적으로 오답이라 어디가 틀렸는지를 모르겠습니다.
도움 부탁드리겠습니다.
조합을 사용하여 각 원소들의 합을 더한후 입력값과 비교했고요.
조건도 맞는거 같은데, 고수님들 도와주세요~
11년 전