DFS的栈做法

Posted 幻觉czw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DFS的栈做法相关的知识,希望对你有一定的参考价值。

#include<iostream>//求出搜索路径
#include<stack>
using namespace std;
#define N 9
int main()

	stack<int>A;
	bool visit[N];
	memset(visit,0,sizeof(visit));
	bool arr[N][N]=
		0,0,0,0,0,1,1,0,0,
		1,0,0,0,0,0,0,1,0,
		1,0,0,1,0,0,0,0,0,
		0,0,1,0,0,1,0,0,0,
		0,0,1,1,0,0,1,0,0,
		0,0,0,0,1,0,0,0,0,
		0,0,0,0,0,0,0,0,0,
		0,1,0,0,0,0,0,0,0,
		0,0,0,0,0,0,0,0,0
	;
	for(int i=0;i<N;++i)
	
		if(!visit[i])
		
			visit[i]=1;
			A.push(i);
			while(!A.empty())
			
				cout<<A.top()<<' ';
				int idx=A.top();
				A.pop();
				for(int j=0;j<N;++j)
				
					if(arr[idx][j]==1 && visit[j]==0)
					
						A.push(j);
						visit[j]=1;
						break;
					
				
			
		
	
	return 0;


以上是关于DFS的栈做法的主要内容,如果未能解决你的问题,请参考以下文章

全排列的DFS做法

素数环(dfs&&STL做法)HDU - 1016

幸运数(DFS做法)

简单的栈和队列

BFS和DFS的优劣和场景比较

BZOJ 1086 [SCOI2005]王室联邦 ——DFS