65번 미로탐색 질문있습니다!
238
작성한 질문수 2
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define size 8
int cnt = 0;
int dx[4] = { 0,1,0,-1 };//12시 3시 6시 9시 방향 순
int dy[4] = { 1,0,-1,0 };
int dfs(int mtrx[][size], vector<vector<int> > visit, int x, int y)
{
int xx, yy;
if (x==size-1&&y==size-1)
{
cnt++;
}
else
{
visit[x][y] = 1;
for (int i = 0; i < 4; i++)
{
xx = x + dx[i];//x축으로 갈좌표
yy = y + dy[i];//y축으로 갈 좌표
if (xx < 1 || xx>7 || yy < 1 || yy>7)//행렬을 벗어나는 경우
continue;
if (mtrx[xx][yy] == 0 && visit[xx][yy] != 1)
{
dfs(mtrx,visit,xx,yy);
}
}
}
return cnt;
}
int main()
{
int mtrx[size][size];
vector<vector<int> > visit(size,vector<int>(size, 0));
for (int i = 1; i < size; i++)
{
for (int j = 1; j < size; j++)
{
cin>>mtrx[i][j];
}
}
int count = dfs(mtrx,visit, 1, 1);
cout << count;
}
65번 미로탐색 질문있습니다!
저는 전역변수를 사용하는 것보다 함수의 인수로 전달하는게 더 익숙하여 함수의 인수로 visit 벡터 즉 방문한 길인지 아닌지 판별하는 2차원 벡터를 넘겨주었습니다. 이렇게 할 경우 정확한 답이 나옵니다.
그러나 인수로 메인문에서 선언된 배열 자체 int visit[][size], 를 넘기거나 int** visit 처럼 동적생성을해서 배열을 넘기면
답이 정상적으로 나오지 않습니다. 저는 벡터가 동적생성되었기 때문에 int** visit으로 넘기면 정상작으로 동작할 것으로 생각했으나 실제로 그렇지 않아 의문이 생기게되어 질문드립니다. 함수의 인수로 벡터와 배열을 넘길때와 동적생성한 배열을 넘길때의 차이를 알고 싶습니다!
답변 1
테스트 케이스 질문
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





