【算法设计与分析】递归与分治策略及其应用--有重复元素的排列问题2

【算法设计与分析】递归与分治策略及其应用–有重复元素的排列问题https://blog.csdn.net/qq_52626583/article/details/123572390?spm=1001.2014.3001.5502
这个思路太复杂了。
有界限的重复元素排列问题 直接dfs会简单很多

#include<stdio.h>
char s[550];
int num[27];
char p[550];
int n;
int sum = 0;
void dfs(int x){
    
    
	if(x==n){
    
    
		sum++;
		printf("%s\n",p);
	}else{
    
    
		for(int i = 1; i <=26;i++){
    
    
			if(num[i]){
    
    
				p[x] = i-1 + 'a' ;
				num[i]--;
				dfs(x+1);
				num[i]++;
			}
		}
	}
}
int main(){
    
    
	scanf("%d",&n);scanf("%s",s);
	for(int i = 0; i< n;i++){
    
    
		num[s[i]-'a'+1] ++;
	}	
	dfs(0);
	printf("%d",sum);
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_52626583/article/details/124316110
今日推荐