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;
}


相关文章
|
7月前
|
机器学习/深度学习 算法 测试技术
【图论】【广度优先】【 并集查找】2092 找出知晓秘密的所有专家
【图论】【广度优先】【 并集查找】2092 找出知晓秘密的所有专家
|
4月前
|
存储 安全 算法
加盐哈希的科学原理及其重要性
【8月更文挑战第31天】
116 0
|
6月前
|
存储 算法 数据可视化
【漫画算法】哈希表:古代皇帝的秘密魔法书
【漫画算法】哈希表:古代皇帝的秘密魔法书
|
存储 人工智能 算法
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
86 0
【C++杂货铺】再谈哈希算法:位图 | 布隆过滤器 | 哈希切分
|
存储 缓存 Shell
【C++杂货铺】一文带你走进哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列
【C++杂货铺】一文带你走进哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列
90 0
【C++杂货铺】一文带你走进哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列
|
前端开发 Python
幸运哈希hash单双尾数大小竞猜游戏开发源码部署
def is_even_number(number): """判断一个整数是否为偶数""" return number % 2 == 0
|
存储 算法 安全
走进Python Hash函数的魔幻世界:解密哈希算法与防碰撞技术
走进Python Hash函数的魔幻世界:解密哈希算法与防碰撞技术
182 0
哈希表——我欲修仙(功法篇)
哈希表——我欲修仙(功法篇)
115 0
|
JavaScript 前端开发 算法
日拱算法:两个数组的交集(I、II)
本篇带来两个数组的交集(I、II)之双指针解法~ 冲就完事了~
|
算法
算法竞赛100天第四天 —— 设计哈希表(散列表)
算法竞赛100天第四天 —— 设计哈希表(散列表)
135 0
算法竞赛100天第四天 —— 设计哈希表(散列表)