从str中选 m 个数的所有排列算法

// 从str中选 m 个数的所有排列算法 
void perm(string str,int a,int b,int m){
//	字符数达到 m 个进行输出 
	if(a==m){
		for(int i=0;i<m;i++){
			cout<<str[i];
		}
		cout<<endl;
	}
//	这一句删除,避免每次递归都多出一步判断
//	if(a==b){
//		return;
//	}  
	for(int k=a;k<=b;k++){
		swap(str[k],str[a]);
		perm(str,a+1,b,m);
//		去掉这一句排列出来的才是有序的,否则会出现无序 
//		swap(str[k],str[a]);
	}
} 
int main(){
	string str;
	int m;
//	输入的字符各不相同,且从小到大有序 
	cin>>str>>m;
	perm(str,0,str.size()-1,m);
}
全部评论

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务