DFS 숫자 정렬

DFS: 스테이크 공간: O(n)은 가장 짧은 공간을 갖지 않습니다.

BFS: 대기열 공간: O(2^n)은 최단 경로를 찾을 수 있습니다.

DFS 예제 및 코드 템플릿 

주제 설명

정수 n이 주어졌을 때 1~n까지의 숫자를 일렬로 배열하면 여러 가지 방법이 있을 것이다.

이제 모든 순열 방법을 사전순으로 출력하십시오.

입력 형식
정수 n을 포함하여 총 한 줄

출력 형식
모든 순열 체계를 사전순으로 출력합니다. 각 체계는 한 줄을 차지합니다.

데이터 범위
1≤n≤7
입력 샘플

3

출력 샘플

1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

#include<iostream>
using namespace std;
const int N = 10;

int n;
int path[N];
bool st[N];

void dfs(int u){
	if(u==n){
		for(int i=0;i<n;i++)
			printf("%d ",path[i]);
			puts("");//输出换行 
			return;
	}
	for(int i=1;i<=n;i++){
		if(!st[i]){
			path[u]=i;
			st[i]=true;//标记某个数字已经使用
			dfs(u+1);
			st[i]=false;//还原某个数字的标记
		} 
	}
}
int main(){
	cin>>n;
	dfs(0);
	return 0;
} 

Supongo que te gusta

Origin blog.csdn.net/m0_56501550/article/details/129697710
Recomendado
Clasificación