字元串排序
時間限制(普通/Java) : 1000 MS/ 3000 MS 運作記憶體限制 : 65536 KByte
總送出 : 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]);
}
}