// B1043 输出PATest (20分).cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
/*
考察:
1、哈希+给出N个字符,判断是这N个字符内的+如何循环输出
编程思想:
1、hash增加,
2、然后按照这几个字母的顺序输出,输出完减减直至完
关键,如果保证顺序呢,hash应该只开6个,对,只保证6个,6个if else_if
统计一个Num,然后6个if else_if。。。减去num,知道num为0
learn && wrong:
1、现在就是不够细节,才会写到后面出错(以后可以再求精一点)
2、为了不重复写判断str[i]是否6个字符内,不如写个char dict,来判断
3、如何连续的输出PAT。。。是个问题啊,输出第一个元素,第二个元素,如果hash[i]>0,输出对应的dict,并且hash[i]--,sum也--
4、直接对原字符串反复循环会超时
5、10的四次,写成了3次,错了一组
*/
#include <iostream>
#include <cstring>
using namespace std;
char str[10010];
int hash1[6] = { 0 };
char dict[6] = { 'P','A','T','e','s','t' };
int main()
{
cin >> str;
int len = strlen(str);
int num = 0;
for (int i = 0;i < len;++i) {
for (int j = 0;j < 6;++j) {
if (str[i] == dict[j]) {
hash1[j]++;
num++;
}
}
}
while (num > 0) {
for (int i = 0;i < 6;++i) {
if (hash1[i] > 0) {
cout << dict[i];
hash1[i]--;
--num;
}
}
}
return 0;
}






网友评论