• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

이러한 문제에 도달했을때 즉시 종료할수있다면 하는것이 좋을까요?

21.05.31 16:54 작성 조회수 117

0

#include <stdio.h>
#include <algorithm>
using namespace std;
int n, i, arr[11], total=0;
bool flag = false;

void DFS(int level, int sum){
	if(sum > total/2){
		return;
	}
	if(level == n+1){
		if(sum == (total-sum)){
			flag = true;
			return;
		}
	} else {
		DFS(level+1, sum+arr[level]);
		DFS(level+1, sum);
	}
}

int main(){
	//freopen("input.txt", "rt", stdin);
	scanf("%d", &n);
	for(i=1; i<=n; i++){
		scanf("%d", &arr[i]);
		total += arr[i];
	}
	if(total%2 == 1){
		printf("NO");
		return 0;
	}
	DFS(1, 0);
	if(flag){
		printf("YES");
	} else {
		printf("NO");	
	}
	
	return 0;
}

선생님 말씀대로 코드를 짰는데요 우선 total%2 ==  1 (홀수)이면 즉시 종료하는것으로 하는건 좋은 답일까요 안좋은 답일까요?

답변 1

답변을 작성해보세요.

1

안녕하세요^^

좋은 아이디어 입니다. 잘 하신 코드입니다.