• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

DFS -1번문제(아마존)

23.03.02 18:05 작성 조회수 323

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"를 한 번 했다고 호출되어 스택에 대기상태에 있는 모든 재귀가 끝나는 게 아닙니다. 이 문제는 영상의 방법으로 공부하시면 좋겠습니다.