从标准输入读入一个由字母构成的串(不大于30个字符)。

从该串中取出3个不重复的字符,求所有的取法。

取出的字符,要求按字母升序排列成一个串。

不同的取法输出顺序可以不考虑。

例如:
输入:
abc
则输出:
abc

输入:
abcd
则输出:
abc
abd
acd
bcd

输入:
abcaa
则输出:
abc

 1 #include<stdio.h>
 2 #include<string.h>
 3 char s[50];
 4 int index=0;
 5 void reSort(char *pArray, int remainNum, int printLen)
 6 {
 7     if (remainNum < printLen)return;
 8     if (printLen <= 0)
 9     {
10         for(int i=0;i<index;i++)
11             putchar(s[i]);
12         putchar('\n');
13         return;
14     }
15     for(int i = 0; i < remainNum; i++)
16     {
17         s[index++]=pArray[i];
18         reSort(pArray+i+1, remainNum-i-1, printLen-1);
19         index--;
20     }
21 }
22 
23 int main()
24 {
25     char s[30],str[30],flag[27]={0};
26     gets(s);//输入一个串
27     int len = strlen(s),j=0;
28     for(int i=0;i<len;i++)
29     {
30         if(!flag[s[i]-'a'])
31         {
32             str[j++]=s[i];
33             flag[s[i]-'a']=1;
34         }
35     }
36     str[j]=0;//形成串
37     reSort(str, strlen(str), 3);
38     getchar();
39     return 0;
40 }

取字符_编程

取字符_编程_02