4번 문제만 계속 틀립니다.
안녕하세요 선생님!
항상 좋은 강의 감사히 잘 듣고 있습니다.
이번 문제에서 제 코드로는 4번 문제가 계속 틀렸다고 나와서 선생님 코드 그대로 따라했는데도 4번 문제가 틀렸다고 되더라구요... 채점기 output이 잘못된건지 제가 짠 코드가 잘못된건지 확인 부탁드립니다...!
제 코드
#include <stdio.h> #include <cmath> int n; int a[11]; int b[100]; int c[1025]; int sum; int idx = 1; void DFS(int x) { if(x == n+1) { sum = 0; for(int i = 1; i <= n; i++) if(b[a[i]] == 1) sum += a[i]; c[idx++] = sum; } else { b[a[x]] = 1; DFS(x+1); b[a[x]] = 0; DFS(x+1); } } int main() { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); DFS(1); for(int i = 1; i <= pow(2, n); i++) { int temp = c[i]; if(temp == 0) continue; for(int j = 1; j <= pow(2, n); j++) { if(i == j) continue; if(temp == c[j]) { printf("YES"); return 0; } } } printf("NO"); return 0; }선생님 코드
#include <stdio.h>
int n;
int a[11];
int total = 0;
bool flag = false;
void DFS(int x, int sum)
{
if(sum > (total/2)) return;
if(flag) return;
if(x == n+1)
{
if(sum == (total/2))
{
flag = true;
}
}
else
{
DFS(x+1, sum+a[x]);
DFS(x+1, sum);
}
}
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
total += a[i];
}
DFS(1, 0);
if(flag)
printf("YES");
else
printf("NO");
return 0;
}
답변 1
0
안녕하세요^^
님의 코드는 아래와 같은 입력을 YES로 출력합니다.
4
1 3 4 5
위 입력을 {1, 3, 4}라는 부분집합과 {3, 5}라는 부분집합이 합이 같다고 판단해서 YES를 출력합니다.
답은 NO가 나와야 합니다. {1, 3, 4}가 하나의 부분집합이면 반대편 부분집합은 1, 3, 4를 뺀 {5}인 부분집 합 이어야 합니다. 즉 전체집합을 두 개의 부분집합으로 나누는 것입니다. 동일원소가 양속 부분집합에 모두 사용되면 안됩니다.
제 코드는 아래 부분을 수정하면 됩니다. total / 2를 하다보면 소수점 이하가 절삭되는 경우가 있어 if 조건문이 참이 되는 경우도 있습니다. if(sum == (total - sum))으로 바꾸면 100점 나올겁니다. 예를 들면 total값이 15이고 sum 값이 7이면 if( 7 == 15/2) 가 참이 되어 버립니다.
if(x == n+1) { if(sum == (total/2)) //if(sum == (total - sum)) 으로 수정 { flag = true; } }
87번 채점 프로그램에 오류가 있는 것 같습니다.
0
89
2
그리디 파트
0
115
2
안녕하세요. 선생님(54번 코드 관련 문의)
0
141
2
테스트 파일 exit_coe_1, time_limit_exceeded 질문
0
143
1
C언어로 코드를 짜면 채점 시에 한 문제 빼고 시간 초과가 발생하는데 해결하는 방법이 있을까요?
0
172
1
19번 질문있습니다
0
123
1
6번 관련 채점오류입니다
0
88
2
22번 문제는 C로 풀어주신 건가요 C++로 풀어주신 건가요?
0
166
2
dev C++ 콘솔창 바로 닫힘
0
245
1
최신화하기
0
171
1
채점이 안되요...
1
261
1
안녕하세요 강사님 정렬에 대해서 설명이 조금 더 듣고 싶습니다.
0
113
1
45번 공주구하기 문제를 list를 이용해서 이렇게 풀어도 될까요?
0
155
1
39번 두 배열 합치기 문제 채점 오류인가 코드 오류인가
0
155
0
채점기에서 틀렸다고 나오는데 이유를 모르겠습니다.
0
149
2
해당 강의에서 C언어로만 진행하는 강의 문의 건
0
145
2
87번 문제 섬나라 아일랜드 질문
0
128
1
16번 문제에서 직접 답을 대입하면 정답이 나오는데 채점에서 wrong answer가 나옵니다.
0
149
1
40번 교집합 문제
0
166
1
43번 뮤직비디오 문제 테스트케이스 4번을 만족 못합니다.
0
170
1
41. 연속된 자연수의 합 문제 질문있습니다.
0
166
1
질문있습니다.
0
193
2
시간초과가 나요
0
172
1
43번 문제 3 ~ 5번에 문제가 있는것 같습니다.
0
249
1





