PAT乙级(散列) 1038、1039、1042、1043、1047、1005(一)

简介: PAT乙级(散列) 1038、1039、1042、1043、1047、1005

1038 统计同成绩学生 (20 分)

本题要求读入 N 名学生的成绩,将获得某一给定分数的学生人数输出。

输入格式:

输入在第 1 行给出不超过 105 的正整数 N,即学生总人数。随后一行给出 N 名学生的百分制整数成绩,中间以空格分隔。最后一行给出要查询的分数个数 K(不超过 N 的正整数),随后是 K 个分数,中间以空格分隔。

输出格式:

在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。

样例:">输入样例:

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88

输出样例:

3 2 0

代码:

#include<iostream>
using namespace std;
int main(){
    //设置score数组,通过成绩作为数组下标的方式检索人数
    int score[110] = {0}, person, temp;
    cin >> person;  //总人数
    for (int i = 0; i < person; i++){
        cin >> temp;
        score[temp]++;  //成绩对应的数组下标人数+1
    }
    cin >> person;  //检索成绩的个数
    for (int i = 0; i < person; i++){
        cin >> temp;
        //PAT特色输出,输出成绩对应下标的元素
        if (i != person - 1){
            cout << score[temp] << ' ';
        }
        else{
            cout << score[temp];
        }
    }
    return 0;
}

1039 到底买不买 (20 分)

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。

为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。

4bd222370bd1a9d692e04b6c387325c3.jpg

输入格式:

每个输入包含 1 个测试用例。每个测试用例分别在 2 行中先后给出摊主的珠串和小红想做的珠串,两串都不超过 1000 个珠子。

输出格式:

如果可以买,则在一行中输出 Yes 以及有多少多余的珠子;如果不可以买,则在一行中输出 No 以及缺了多少珠子。其间以 1 个空格分隔。

输入样例 1:

ppRYYGrrYBR2258
YrR8RrY

输出样例 1:

Yes 8

输入样例 2:

ppRYYGrrYB225
YrR8RrY

输出样例 2:

No 2

代码:

#include<iostream>
#include<string>
using namespace std;
int main() {
    string str1, str2;  //str1为摊主的珠子,str2为想要的珠子
    cin >> str1;
    //通过标记字符ASCII码的方式解决问题
    int colour[128] = { 0 }, len1 = str1.length(), temp = 0;
    //遍历str1数组,得到其字符元素的ASCII码,通过该ASCII码作为下标得到各字符出现频次
    for (int i = 0; i < len1; i++) {
        temp = str1[i];
        colour[temp]++;
    }
    cin >> str2;
    int len2 = str2.length();
    //遍历str1数组,得到其字符元素的ASCII码,在对应ASCII码下标的数组元素中减去其出现频次
    for (int i = 0; i < len2; i++) {
        temp = str2[i];
        colour[temp]--;
    }
    //通过yesOrNot标记是否满足需要
    bool yesOrNot = true;
    temp = 0;
    //遍历ASCII码数组,如果出现负数,则说明摊主的珠子不能满足需要,并且,累加差额
    for (int i = 0; i < 128; i++) {
        if (colour[i] < 0) {
            yesOrNot = false;
            temp -= colour[i];
        }
    }
    if (yesOrNot) {
        cout << "Yes " << len1 - len2;
    }
    else {
        cout << "No " << temp;
    }
    return 0;
}

1042 字符统计 (20 分)

请编写程序,找出一段给定文字中出现最频繁的那个英文字母。

输入格式:

输入在一行中给出一个长度不超过 1000 的字符串。字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个英文字母,以回车结束(回车不算在内)。

输出格式:

在一行中输出出现频率最高的那个英文字母及其出现次数,其间以空格分隔。如果有并列,则输出按字母序最小的那个字母。统计时不区分大小写,输出小写字母。

输入样例:

This is a simple TEST.  There ARE numbers and other symbols 1&2&3...........

输出样例:

e 7

代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    //不能使用cin >> str; 这种方式遇到空格就会停止输入
    getline(cin,str);
    int len = str.length(), count[130] = {0}, temp = 0;
    //遍历字符串
    for (int i = 0; i < len; i++){
        //如果碰到大写字母,则转换其为小写
        if (str[i] >= 'A' && str[i] <= 'Z'){
            str[i] += 32;
        }
        //统计每种小写字母出现的频次
        if (str[i] >= 'a' && str[i] <= 'z'){
            temp = str[i];
            count[temp]++;
        }
    }
    temp = -1;
    int max = -1;
    //遍历ASCII码数组,得到最高频次的小写字母及其出现频次
    for (int i = 0; i < 130; i++){
        if(count[i] > max){
            max = count[i];
            temp = i;
        }
    }
    char res = temp;
    cout << res << ' ' << max;
    return 0;
}


相关文章
|
算法 数据安全/隐私保护 Python
哈希算法(hash)加密解密
哈希算法(hash)加密解密
10732 11
哈希算法(hash)加密解密
|
2月前
|
存储 安全 算法
散列哈希
【10月更文挑战第16天】
|
存储 算法 数据处理
哈希(散列)查找算法
本文主要是散列表的认识与哈希查找!
288 1
|
算法
散列,字符串hash初步
散列,字符串hash初步
111 0
|
算法 安全 PHP
Hash算法详细介绍与实现(一)
Hash表(HashTable)又称散列表,通过把关键字Key映射到数组中的一个位置来访问记录,以加快查找速度,这个映射函数称为Hash函数,存放记录的数组称为Hash表.散列表是散列函数的一个主要应用(注意:关键字不是像在加密中所使用的那样是秘密的,但它们都是用来"解锁"或者访问数据的。)例如,在英语字典中的关键字是英文单词,和它们相关的记录包含这些单词的定义。在这种情况下,散列函数必须把按照字母顺序排列的字符串映射到为散列表的内部数组所创建的索引上。
405 1
|
测试技术
PAT乙级(散列) 1038、1039、1042、1043、1047、1005(二)
PAT乙级(散列) 1038、1039、1042、1043、1047、1005
107 0
|
算法 安全 数据安全/隐私保护
哈希函数/散列算法
哈希函数(Hash function),又称散列函数、散列算法,它是一种不可逆的信息摘要算法,具体实现就是把任意长度的输入信息通过哈希算法变成固定长度的输出信息。
256 0
|
缓存 算法
Hash算法平衡性
Hash算法平衡性
94 0
|
Python
Hash-Buster,哈希值破解
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396532 ...
1219 0