64번에서 ch 배열 다시 0으로 초기화 하지 않는것에 관련하여 질문 있습니다!
257
작성한 질문수 2
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int cnt = 0;
int dfs(int n,int start, vector<vector<int> > mtrx, vector<bool> visit)//visit벡터를 콜바이 밸류로 받아오기 떄문에 값이 변하지 않음
{
if (start == n)
{
cnt++;
}
else
{
visit[start] = true;
for (int i = 1; i <= n; i++)
{
if (mtrx[start][i] == 1 && visit[i] == false)
{
dfs(n, i, mtrx, visit);//이 함수를 빠져나왔을 경우 들어가기 직전의 visit 벡터를 갖고 있으므로 다시 방문하지 않았다는 표시를 해줄 필요없음
}
}
}
return cnt;
}
int main()
{
int n, m;
int n1, n2;
cin >> n >> m;
vector<bool> visit(n+1, false);//방문했던 지점인지 체크하기위해서
vector<vector<int> > mtrx(n + 1, vector<int>(n + 1, 0));//n+1/n+1 크기의 행렬을 0으로 초기화
for (int j = 1; j <= m; j++)
{
cin >> n1 >> n2;
mtrx[n1][n2] = 1;//인접행렬 생성
}
int count = dfs(n, 1, mtrx,visit);
cout << count;
}
답변 1
0
안녕하세요^^
네. 맞습니다. 콜바이밸류로 넘겼기 때문에 이전 함수로 백을 할 때 이전 벡터상태로 자동으로 되돌아갑니다.
만약 vector<bool> &visit 이렇게 콜바이레퍼런스로 매개변수를 만들었다면 꼭 이전함수로 백을 할 때 visit를 false로 해주어야 합니다.
테스트 케이스 질문
0
390
1
병합정렬 시간복잡도 질문
0
476
1
41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.
0
1368
2
질문드립니다.
0
392
1
질문드립니다!
0
438
1
dev 프로그램 질문
0
277
1
문제가 이해가 안되요
0
381
1
4번 나이차이 문제 접근법 질문 드립니다.
0
310
1
source file not compiled
0
1075
3
59번 질문드립니다.
0
377
1
25번 문제 질문
0
352
1
4. 나이차이 문제 질문입니다.
0
378
1
90번 라이언 킹 심바 1번 테스트 케이스
0
473
1
71번 문제 전역 변수 질문 있습니다
0
367
1
75번, 79번 priority_queue관련
1
361
1
75.최대 수입 스케줄
0
404
2
복면산 정답의 수
0
438
1
테스트 케이스에 대해서
0
452
1
수업 내용 질문입니다!
1
237
1
풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!
0
848
2
12. 플로이드-와샬(그래프 최단거리) . 27:25초
0
259
1
다른 풀이 방식
0
320
1
크루스칼 vs 프림
0
316
1
숫자 총개수 small 질문있습니다.
0
246
1





