chaosuper85

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks
#include
#include
/* 字符串的所有字符排列函数,用已知字符串s中的所有字符,生成由其中n个字符组成的所有字符排列 */
#define N 20
char w[N];
perm(int n, char *s)
{
char s1[N];
int i;
if(n<1)
printf("%s\n",w); /* 一个排列生成输出 */
else
{
strcpy(s1,s); /* 保存本层次可使用的字符 */
for(i=0;*(s1+i);i++) /* 依次选本层次可用字符 */
{
*(w+n-1)=*(s1+i);/* 将选用字符填入正在生成的字符排列中 */
*(s1+i)=*s1;
*s1=*(w+n-1);
perm(n-1,s1+1); /* 递归 */
}
}
}
int main()
{
int n=2;
char s[N];
w[n]='\0';
printf("This is a char permutation program!\nPlease input a string:\n");
scanf("%s",s);
puts("\nPlease input the char number of permuted:\n");
scanf("%d",&n);
puts("The permuted chars are:\n");
perm(n,s);
puts("\nPress any key to quit...");
return 0;
}
posted on 2010-02-03 21:03 chaosuper 阅读(100) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理