取字符
从标准输入读入一个由字母构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字母升序排列成一个串。
不同的取法输出顺序可以不考虑。
例如:
输入:
abc
则输出:
abc
输入:
abcd
则输出:
abc
abd
acd
bcd
输入:
abcaa
则输出:
abc
解题思路:
利用set不存储相同元素的特性来去重,然后用三重循环输出3个不重复的字符。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <set>
#include <algorithm>
using namespace std;
set<char> s;
char c[30],str[30];//原始串和去重后的串
int j=0;
int main()
{
cin>>c;//读取原始串
for(int i=0; i<strlen(c); ++i)
s.insert(c[i]);//插入set去重
set<char>::iterator iter;
for(iter = s.begin(); iter!=s.end(); ++iter)
str[j++]=*iter;
for(int i=0; i<strlen(str); ++i)//三重循环输出3个不重复的字符
for(int j=i+1; j<strlen(str); ++j)
for(int k=j+1; k<strlen(str); ++k)
cout<<str[i]<<str[j]<<str[k]<<endl;
return 0;
}
/*
abc
abcd
abcaa
*/