작성
·
475
0
안녕하세요 교수님
질문은 아래 코드와 함께 표시해 두었습니다.
import java.util.*;
class Main {
static int n;
static int[] graph; //전체집합
static int total=0;
public String DFS(int val, int s) { //graph[0]부터 시작
if(val==n) {
if((total-s) == s)
return "YES"; //이부분에서 RETURN이 제대로 이루어 지지 않는 이유가 궁금합니다.
}
else {
DFS(val+1,s+graph[val]);
DFS(val+1,s);
}
return "NO";
}
public static void main(String[] args) {
Main tree=new Main();
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
graph=new int[n];
for(int i=0; i<n; i++) {
graph[i]=scanner.nextInt();
total+=graph[i];
}
System.out.print(tree.DFS(0,graph[0])); //graph[0]부터 시작
}
}
답변 1
0
안녕하세요^^
System.out.println(val+" "+s);
코드를 return "NO" 바로 위 라인에서 출력해보세요. 그리고 재귀함수는 return "YES"를 한 번 했다고 호출되어 스택에 대기상태에 있는 모든 재귀가 끝나는 게 아닙니다. 이 문제는 영상의 방법으로 공부하시면 좋겠습니다.