取字符
来源:互联网 发布:美国缩表中国楼市知乎 编辑:程序博客网 时间:2024/05/24 07:14
题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1003&cid=31654&problem=Problem%20%20C
解法或类型。
Description
从标准输入读入一个由字符构成的串(不大于30个字符)。
从该串中取出3个不重复的字符,求所有的取法。
取出的字符,要求按字符升序排列成一个串。
不同的取法输出顺序可以不考虑
Input
从标准输入读入一个由字符构成的串(不大于30个字符)。
Output
从该串中取出3个不重复的字符,求所有的取法。
Sample Input
abc
abcaa
abcd
Sample Output
abc
abc
abc
abd
acd
bcd
题意描述
给一组字母,抽出3个字母,从大到小排序,分别输出所有可能。
解题思路
先把重复的字母去掉,然后从小到大排序,最后用一个三层循环,第一层控制第一个字母,第二层控制第二个字母,第三层控制第三个字母。
时空分析:
程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str[100],str2[100],c;
int i,y,t,j,l,k;
while(gets(str))
{
memset(str2,0,sizeof(str2));
y=0;
for(i=0;str[i]!='\0';i++)
{
t=0;
for(j=i+1;str[j]!='\0';j++)
{
if(str[i]==str[j])
str[j]=' ';
t++;
}
//printf("%d\n",t);
if(str[i]!=' ')
{
str2[y]=str[i];
y++;
}
}
//printf("%d\n",y);
//puts(str2);
for(i=0;str2[i]!='\0';i++)
{
for(j=0;str2[j]!='\0';j++)
{
if(str2[i]<str2[j])
{
c=str2[i];
str2[i]=str2[j];
str2[j]=c;
}
}
}
//puts(str2);
l=strlen(str2);
//printf("%d\n",l);
for(i=0;i<l-2;i++)
{
for(j=i+1;j<l-1;j++)
{
for(k=j+1;k<l;k++)
{
printf("%c",str2[i]);
printf("%c",str2[j]);
printf("%c",str2[k]);
printf("\n");
}
//printf("\n");
}
//printf("\n");
}
}
return 0;
}错误分析:
1、所有输出没有严格按照题目要求输出。
2、
3、
- 取字符
- 取字符
- 取字符
- 中英文字符切取
- 取属性字符
- 戴取字符用法
- 取字符长度
- SQL取最后字符
- C++取随机字符
- 字符中的英文切取
- 取字符好用例子
- 字符取中en长度
- MS SQLSERVER 取字符函数
- 从string逐个取字符
- 任取字符的组合
- 取逗号之间的字符
- 字符与数字取模...
- EL表达式取字符问题
- 使用Android Studio开发系统性的应用(如闹钟)(多图)
- mysqldump
- Frames not available for unsuspended thread
- 枚举3
- a
- 取字符
- Android edittext的inputType属性
- 回归中的相关系数以及R平方值和Python应用举例
- SWIFT逻辑控制之控制转移
- webmagic学习笔记(4)---webmagic总体架构分析
- Graph Theory
- android保持屏幕常亮
- iOS 随身笔记之tableview 被选中后取消被选中的颜色 以及git客户端的下载
- 深入理解mysqldump原理 --single-transaction --lock-all-tables --master-data