首页 > 学院 > 开发设计 > 正文

有重复元素的排列问题

2019-11-14 10:18:34
字体:
来源:转载
供稿:网友
#include<stdio.h>#include<stdlib.h>#include<string.h>using namespace std;char a[100001],s[100001],d[100001];int b[100001],zs,asd[100001],n,ans;void out(){ int i; ans++; for(i=1;i<=n;i++) PRintf("%c",s[i]); printf("/n");}void search(int i){ for(int j=1;j<=zs;j++){ if(b[j]){ b[j]--; s[i]=d[j]; if(i<n)search(i+1); else out(); b[j]++; } }}int main(){ freopen("perm.in","r",stdin); freopen("perm.out","w",stdout); int i,j,k; scanf("%d/n",&n); gets(a); for(i=0;i<strlen(a);i++){ if(!asd[a[i]]){ zs++;asd[a[i]]++;d[zs]=a[i]; } else asd[a[i]]++; } for(i=0;i<strlen(a);i++) for(j=1;j<=zs;j++) if(d[j]==a[i])b[j]=asd[a[i]]; search(1); printf("%d/n",ans); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表