天天看點

NOJ 字元串排序 1023

字元串排序

時間限制(普通/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]);
    }
}