rogramers : 여행 경로 - C++
11352 단어 백트래킹PROGRAMERSlevel3PROGRAMERS
여행 경로
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<string>> ansList;
vector<string> ans;
void DFS(int depth, string prevDest, bool* isused, vector<vector<string>>& tickets){
if(depth == tickets.size())
{
ans[depth] = prevDest;
vector<string> tmp;
for(int i=0;i<=depth;i++) tmp.push_back(ans[i]);
ansList.push_back(tmp);
return;
}else{
for(int i=0;i<tickets.size();i++)
{
if(isused[i]) continue;
if(tickets[i][0] != prevDest) continue;
isused[i] = true;
ans[depth] = tickets[i][0];
DFS(depth+1, tickets[i][1], isused, tickets);
isused[i] = false;
}
}
}
vector<string> solution(vector<vector<string>> tickets) {
ans.resize(10000);
bool isused[tickets.size()];
fill(isused, isused+tickets.size(), false);
for(int i=0;i<tickets.size();i++)
{
if(tickets[i][0] != "ICN") continue;
isused[i] = true;
ans[0] = tickets[i][0];
DFS(1, tickets[i][1], isused, tickets);
isused[i] = false;
}
stable_sort(ansList.begin(), ansList.end());
return ansList[0];
}
- 깨달은 것
: vector<vector<string>>> ansList
자체를 오름차순으로 꺼내려면
sort(ansList.begin(), ansList.end());
로하면 된다
(기본 sort
에서 vector<string>
에 대해 알아서 정렬 해줌)
Author And Source
이 문제에 관하여(rogramers : 여행 경로 - C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@neity16/Programers-여행-경로-C
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <string> #include <vector> #include <algorithm> using namespace std; vector<vector<string>> ansList; vector<string> ans; void DFS(int depth, string prevDest, bool* isused, vector<vector<string>>& tickets){ if(depth == tickets.size()) { ans[depth] = prevDest; vector<string> tmp; for(int i=0;i<=depth;i++) tmp.push_back(ans[i]); ansList.push_back(tmp); return; }else{ for(int i=0;i<tickets.size();i++) { if(isused[i]) continue; if(tickets[i][0] != prevDest) continue; isused[i] = true; ans[depth] = tickets[i][0]; DFS(depth+1, tickets[i][1], isused, tickets); isused[i] = false; } } } vector<string> solution(vector<vector<string>> tickets) { ans.resize(10000); bool isused[tickets.size()]; fill(isused, isused+tickets.size(), false); for(int i=0;i<tickets.size();i++) { if(tickets[i][0] != "ICN") continue; isused[i] = true; ans[0] = tickets[i][0]; DFS(1, tickets[i][1], isused, tickets); isused[i] = false; } stable_sort(ansList.begin(), ansList.end()); return ansList[0]; }
- 깨달은 것
:vector<vector<string>>> ansList
자체를 오름차순으로 꺼내려면
sort(ansList.begin(), ansList.end());
로하면 된다
(기본sort
에서vector<string>
에 대해 알아서 정렬 해줌)
Author And Source
이 문제에 관하여(rogramers : 여행 경로 - C++), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@neity16/Programers-여행-경로-C저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)