DFS
을 내 마음에 코딩했으며 아이디어를 위해 텍스트 북이나 의사 코드를 언급하지 않았습니다. 불필요한 계산을하는 코드가 있다고 생각합니다. 내 알고리즘의 복잡성을 줄이기위한 아이디어가 있습니까?깊이 우선 검색 구현 및 개선 가능성
vector<int>visited;
bool isFound(vector<int>vec,int value)
{
if(std::find(vec.begin(),vec.end(),value)==vec.end())
return false;
else
return true;
}
void dfs(int **graph,int numOfNodes,int node)
{
if(isFound(visited,node)==false)
visited.push_back(node);
vector<int>neighbours;
for(int i=0;i<numOfNodes;i++)
if(graph[node][i]==1)
neighbours.push_back(i);
for(int i=0;i<neighbours.size();i++)
if(isFound(visited,neighbours[i])==false)
dfs(graph,numOfNodes,neighbours[i]);
}
void depthFirstSearch(int **graph,int numOfNodes)
{
for(int i=0;i<numOfNodes;i++)
dfs(graph,numOfNodes,i);
}
PS : 나에게 좋은 품질 C++ 코드를 삽입하는 방법이 할 수 가르쳐 링크를 보내 주시기 바랍니다 누군가 없습니다. 구문 강조 표시를 시도했지만 제대로 작동하지 않았습니다.
은 훌륭한 답변 정말 감사합니다! 한 가지 더 바보 같은 질문이지만이 코드를 게시하기 위해 어떤 태그를 사용 했습니까? 사전 및 코드 태그가 잘 작동하지 않습니다. – Ali
편집자의 형식 소스 코드 버튼을 사용했는데 '{}'모양입니다. – KCH