1043. 输出PATest(20)

1043. 输出PATest(20)
时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B
判题程序 Standard 作者 CHEN, Yue

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按“PATestPATest….”这样的顺序输出,并忽略其它字符。当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
redlesPayBestPATTopTeePHPereatitAPPT
输出样例:
PATestPATestPTetPTePePee

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const int MaxN = 10010;


bool statistic(char ch,int s[])
{
    bool f = true;
    switch (ch)
    {
    case 'P':++s[0];
        break;
    case 'A': ++s[1];
        break;
    case 'T': ++s[2];
        break;
    case 'e':++s[3];
        break;
    case 's':++s[4];
        break;
    case 't':++s[5];
        break;
    default:
        f = false;;
    }
    return f;
}

void print(int i,int& c)
{
    char ch;
    switch (i)
    {
    case 0:ch = 'P';
        break;
    case 1:ch = 'A';
        break;
    case 2:ch = 'T';
        break;
    case 3:ch = 'e';
        break;
    case 4:ch = 's';
        break;
    case 5:ch = 't';
        break;
    }
    printf("%c", ch);
    ++c;
}


int main()
{
#ifdef _DEBUG
    freopen("data.txt", "r+", stdin);
    //fstream cin("data.txt");
#endif // _DEBUG

    int s[6] = { 0 }, N = 0;// 0:P, 1:A,    2:T     3:e     4:s     5:t 
    char str[MaxN];
    cin.getline(str, MaxN);

    for (int i = 0; str[i]; ++i)
    {
        if (statistic(str[i], s))
        {
            ++N;
        }
    }

    for (int i = 0, j = 0; i < N; j = (j + 1) % 6)
    {
        if (s[j] > 0)
        {
            --s[j];
            print(j,i);
        }
    }

#ifdef _DEBUG
    //cin.close();
#ifndef _CODEBLOCKS
    std::system("pause");
#endif // !_CODEBLOCKS
#endif // _DEBUG

    return 0;
}

你可能感兴趣的:(C/C++,OJ,pat乙级,pat乙级,1043)