字符串排序
时间限制(普通/Java)
:
1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 1475 测试通过 : 321
总提交 : 1475 测试通过 : 321
题目描述
有一些A、C、M组成的字符串,将其按字符A排序。
输入
一组测试数据,输入数据由若干行组成,每行是字符A、C或M组成的字符串。(每个字符串长度不超过1200)
输出
对所有输入的数据,先按字符A的个数进行升序排序,如果字符A的数量相等,再按出现的先后顺序排序,每行输出一个字符串。
样例输入
ACM
MCA
AACAAMMM
AACCMM
CMAAMMMMMM
AAA
样例输出
ACM
MCA
AACCMM
CMAAMMMMMM
AAA
AACAAMMM
这题本来用string类对象的==可是对象的值排序无变化==STL的机制无力
改成字符数组了。
实现代码如下:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
char a[2000+1],s[2000+1][2000+1];
int b[2000+1];
int main()
{
int i=0;
while(scanf("%s",&a)!=EOF)
{
strcpy(s[i],a);
for(int k=0;s[i][k]!='\0';k++)
{
if(s[i][k]=='A')
b[i]++;
}
i++;
}
int m=i,p,min;
while(i--)
{
min=2001;
for(int j=0;j<m;j++)
{
if(min>b[j])
{
min=b[j];
p=j;
}
}
b[p]=2001;
printf("%s\n",s[p]);
}
}