《csp-j2024复赛真题》 简介与解析

简介

这是一份关于2024年CCF非专业级软件能力认证(CSP-J/S 2024)第二轮认证入门级考试的详细信息说明。以下是对这份说明的详细解读:

考试基本信息
‌时间‌:2024年10月26日 08:30 - 12:00
‌题目名称‌:
扑克牌(poker)
地图探险(explore)
小木棍(sticks)
接龙(chain)
‌题目类型‌:均为传统型题目
文件命名与输入输出
‌可执行文件名‌:对应每个题目,分别为 poker, explore, sticks, chain
‌输入文件名‌:对应每个题目,分别为 poker.in, explore.in, sticks.in, chain.in
‌输出文件名‌:对应每个题目,分别为 poker.out, explore.out, sticks.out, chain.out
限制条件
‌每个测试点时限‌:
扑克牌、地图探险、小木棍:1.0秒
接龙:2.0秒
‌内存限制‌:每个题目均为512 MiB
‌测试点数目‌:
扑克牌、地图探险、小木棍:10个
接龙:20个
‌测试点是否等分‌:是(意味着每个测试点的分数相同)
注意事项
‌文件名‌:必须使用英文小写。
‌main函数返回值‌:必须是int类型,程序正常结束时返回值必须是0。
‌程序代码文件放置位置‌:需参考各省的具体要求。
‌错误处理‌:因违反文件名、返回值类型或程序放置位置要求而出现的错误,申诉时不予受理。
‌结果比较方式‌:全文比较,过滤行末空格及文末回车。
‌程序源文件大小‌:必须不大于100KB。
‌栈空间内存限制‌:与题目的内存限制一致。
‌评测机器配置‌:Intel(R) Core(TM) i7-8700K CPU @3.70GHz,内存32GB;时限以此配置为准。
‌样例文件‌:只提供Linux格式附加样例文件。
‌评测环境‌:在当前最新公布的NOI Linux下进行,各语言的编译器版本以此为准。
提交要求
对于C++语言,提交的程序文件名应为 poker.cpp, explore.cpp, sticks.cpp, chain.cpp。
编译选项为 -O2 -std=c++14 -static。
总结

这份说明详细列出了考试的时间、题目、输入输出文件名、限制条件以及注意事项等关键信息。考生在准备和提交程序时,必须严格遵守这些规定,以避免因不符合要求而导致的错误或问题。同时,考生还需要注意程序的效率和正确性,以确保在规定的时限和内存限制内完成题目的解答。

解析 

1.扑克牌(poker)

 

 

要解决这个问题,我们需要统计输入的扑克牌中每种花色和点数的牌的数量,然后计算还需要借多少张牌才能构成一副完整的扑克牌。

以下是详细的步骤:

  1. ‌读取输入‌:从文件中读取输入的牌的信息。
  2. ‌统计现有牌‌:使用二维数组或哈希表统计每种花色和点数的牌的数量。
  3. ‌计算缺少的牌‌:遍历统计结果,计算还需要多少张牌才能凑齐一副完整的扑克牌。
  4. ‌输出结果‌:将结果输出到文件中。

下面是完整的 C++ 代码实现:

#include <iostream>
#include <fstream>
#include <vector>
#include <unordered_map>
#include <string>

using namespace std;

int main() {
    ifstream infile("poker.in");
    ofstream outfile("poker.out");

    int n;
    infile >> n;

    // 使用哈希表记录扑克牌的数量,花色作为key,点数作为value中的一个维度
    unordered_map<char, vector<int>> cardCount;
    // 初始化哈希表
    cardCount['D'] = vector<int>(13, 0); // 方片
    cardCount['C'] = vector<int>(13, 0); // 草花
    cardCount['H'] = vector<int>(13, 0); // 红桃
    cardCount['S'] = vector<int>(13, 0); // 黑桃

    // 点数映射,将字符映射到索引
    unordered_map<char, int> pointIndex = {
        {'A', 0}, {'2', 1}, {'3', 2}, {'4', 3}, {'5', 4}, {'6', 5}, {'7', 6},
        {'8', 7}, {'9', 8}, {'T', 9}, {'J', 10}, {'Q', 11}, {'K', 12}
    };

    // 读取输入的牌
    for (int i = 0; i < n; ++i) {
        string card;
        infile >> card;
        char su
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值