1306: 串中取3个不重复字母
时间限制: 1 Sec 内存限制: 128 MB
题目描述
从标准输入读入一个由字母构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字母升序排列成一个串。
不同的取法输出顺序可以不考虑。
输入
例如:
输入:
abc
输出
则输出:
abc
样例输入
abcd
样例输出
abc abd acd bcd
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void *a,const void *b)
{
return (*(char*)a-*(char*)b);
}
int main()
{
char a[100],b[100];
int i,j,k,m,n;
scanf("%s",&a);
n=strlen(a);
qsort(a,n,sizeof(a[0]),cmp);
m=0;
for(i=0;i<n;i++)
{
if(a[i]!=a[i+1])
b[m++]=a[i];
}
b[m]='\0';
n=strlen(b);
for(i=0;i<n-2;i++)
for(j=i+1;j<n-1;j++)
for(k=j+1;k<n;k++)
{
if(b[i]!=b[j]&&b[j]!=b[k]&&b[i]!=b[k])
printf("%c%c%c\n",b[i],b[j],b[k]);
}
return 0;
}