题解 | #全排列#DFS实现

全排列

https://www.nowcoder.com/practice/5632c23d0d654aecbc9315d1720421c1

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

const int N = 100;

bool visited[N];

char seq[N];

// dfs
void permutation(string str,int index){
	// 如果递归的深度等于字符串的长度表示已经找到序列了 
	if(index == str.size()){
		for(int i = 0;i < str.size();i ++){
			cout << seq[i];
		}
		cout << endl;
	}
	// 排序
	for(int i = 0;i < str.size();i ++){
		if(visited[i]){
			continue;
		}
		visited[i] = true;
		seq[index] = str[i];
		// 递归下一层,把原端点复位 
		permutation(str,index + 1);
		visited[i] = false;
	} 
	
}
int main(){
	string str;
	
	while(cin >> str){
		sort(str.begin(),str.end());
		permutation(str,0);
		cout << endl;
	}
	return 0;
} 

全部评论

相关推荐

在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
迷茫的大四🐶:摊牌了,我是25届的,你们也不招我
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务