해결된 질문
작성
·
262
1
안녕하세요 선생님. 67번 질문드립니다.
전역변수의 값은 시스템 스택에 있는 매 스택 프레임 단계마다 다를 테니, 관리만 잘 한다면 sum을 매개변수로 잡는 구현과 다르지 않을 것 같아서 그렇게 하고 있는 중입니다.
하지만 이 방법이 나중으로 갈수록 좋지 않은 습관일까요? 아니면 속도 측면에서 약간의 불이익이 있을까요? 전역변수는 조금 다르게 저장된다고 배운 기억이 납니다.
#include <iostream>
#include <limits>
using namespace std;
int map[21][21];
bool check[21];
int target;
int sum;
int minVal = INT_MAX;
int numOfVertices, numOfEdges;
void DFS(int vertex){
if(vertex == target){
if(sum < minVal) minVal = sum;
return;
}
else{
for(int i = 1; i <= numOfVertices; i++){
if(map[vertex][i] != 0 && check[i] == false){
sum += map[vertex][i];
check[vertex] = true;
DFS(i);
sum -= map[vertex][i];
check[vertex] = false;
}
}
}
}
int main(int argc, char** argv) {
// freopen("input.txt", "rt", stdin);
cin >> numOfVertices >> numOfEdges;
target = numOfVertices;
for(int i = 0; i < numOfEdges; i++){
int source, dest, weight;
cin >> source >> dest >> weight;
map[source][dest] = weight;
}
check[1] = true;
DFS(1);
cout << minVal;
return 0;
}