Problem Description
从标准输入读入一个由字符构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字符升序排列成一个串。
不同的取法输出顺序可以不考虑。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字符升序排列成一个串。
不同的取法输出顺序可以不考虑。
Input
从标准输入读入一个由字符构成的串(不大于30个字符)。
Output
从该串中取出3个不重复的字符,求所有的取法。
Sample Input
abc
abcaa
abcd
Sample Output
abc
abc
abc
abd
acd
bcd
我的代码:
#include #include int main(void) {char a[31], b[31], c[31]; int len1, len2, i, j, n, t, k, m, p; while(gets(a)!=NULL) //多实例输入一个字符串 { len1=strlen(a); for(i=1;i { for(j=0;j { if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } b[0]=a[0]; //去重并将结果存入字符串b j=1; for(i=1;i { if(a[i]!=a[i-1]) b[j++]=a[i]; } b[j]='\0'; len2=strlen(b); k=0;m=0;j=0; //输出三个字符不重复的字符串 for(;k<=len2-3;k++) { j=k+1; for(;j<=len2-2;j++) { p=j; p++; m=p; for(;m<=len2-1;m++) { printf("%c%c%c\n",b[k],b[j],b[m]); } } } } return 0; }
心得总结:
1.如何输入一个多实例的字符串,即while(gets(a)!=NULL)。
2.如何对字符串进行排序:普通的排序法即可对字符进行排序。
3.遇到次第后移时要对变量的设置尤其谨慎。
4.当所设置的变量不足以支撑算法继续时,可以设置新的变量,将旧有变量赋给新的变量进行计算。