030.字符排列

简介: 030.字符排列
/* 字符串的所有字符排列函数,用已知字符串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);  /* 递归 */
    }
  }
}
main()
{
  int n=2;
  char s[N];
  w[n]='\0';
  clrscr();
  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...");
  getch();
}
相关文章
|
索引
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
53 0
|
6月前
917. 仅仅反转字母
917. 仅仅反转字母
|
6月前
|
算法
现有‘abcdefghijkl’12个字符,将其所有的排列按字典序进行排序,给出任意一组排列,说出这租排列在所有排列中是第几小的
现有‘abcdefghijkl’12个字符,将其所有的排列按字典序进行排序,给出任意一组排列,说出这租排列在所有排列中是第几小的
65 1
|
7月前
|
算法 C++
Acwing.51 数字排列(全排列)
Acwing.51 数字排列(全排列)
逆序一个字符串的每一组单词(不是倒叙)
整体思路: 1.先将整个字符串倒叙:i like china.->.anihc ekil i 2.将倒叙后的每一块单词再倒叙:.anihc->china. 想必大家都发现了,倒叙整个字符串和倒叙每一块是一样的,那么我们不妨写一个倒叙的函数在这里用reserve表示!
82 0
从排列字符串到排列序列:解析增减字符串匹配问题
题目要求根据给定的字符串 s,构造一个排列序列 perm,其中排列序列中的数字满足以下规则: 如果 perm[i] < perm[i + 1],则对应的字符为 'I'; 如果 perm[i] > perm[i + 1],则对应的字符为 'D'。 我们需要根据字符串 s 中的字符,构造满足上述规则的排列序列 perm。
67 0
LeetCode 567. 字符串的排列
LeetCode 567. 字符串的排列
96 0
|
存储 API 索引
leetcode【字符串—中等】151.翻转字符串里的单词
leetcode【字符串—中等】151.翻转字符串里的单词
leetcode【字符串—中等】151.翻转字符串里的单词