Excuses, Excuses! map的应用
发布日期:2021-05-10 16:42:22 浏览次数:14 分类:精选文章

本文共 2068 字,大约阅读时间需要 6 分钟。

为了解决法官伊藤的问题,我们需要编写一个程序来识别包含关键词的借口,并找出最糟糕的借口。以下是详细的解决方案:

方法思路

  • 读取输入数据:首先读取每个数据集的关键词和借口。每个数据集的第一行给出关键词数量K和借口数量E。
  • 存储关键词:将关键词存储到一个集合中,以便快速查找。
  • 处理借口:对于每个借口,检查它是否包含任何关键词。关键词是连续且被非字母或空格分隔开的。
  • 计算关键词出现次数:对于每个借口,计算其中关键词的总出现次数。
  • 找出最糟糕的借口:比较所有借口的关键词出现次数,找出最多的。若有多个,输出所有。
  • 输出结果:输出每个数据集的结果,包括编号和最糟糕的借口。
  • 解决代码

    #include 
    #include
    #include
    #include
    using namespace std;int main() { map
    keywordMap; vector
    excuses; int k, e, setNumber = 1; char currentKeyword[100]; while (true) { // Read each set of data if (scanf("%d %d", &k, &e) == EOF) break; vector
    keywords; for (int i = 0; i < k; ++i) { string kw; scanf("%s", &kw); keywords.push_back(kw); } vector
    excuseList; for (int i = 0; i < e; ++i) { string exc; scanf("%s", &exc); excuseList.push_back(exc); } // Prepare keyword list for checking set
    keywordsSet; for (const auto& kw : keywords) { keywordsSet.insert(kw); } // For each excuse, count the number of keywords vector
    counts; for (const auto& exc : excuseList) { string lowerExc; for (char c : exc) { lowerExc += tolower(c); } int count = 0; for (int i = 0; i <= lowerExc.size() - 1; ++i) { // Check each possible substring of length 1 to 20 for (int l = 1; l <= 20; ++l) { if (i + l > lowerExc.size()) break; string sub = lowerExc.substr(i, l); if (keywordsSet.count(sub)) { count++; } } } counts.push_back(count); } // Find the maximum count int maxCount = *max_element(counts.begin(), counts.end()); // Collect all excuses with maxCount vector
    worstExcuses; for (int i = 0; i < counts.size(); ++i) { if (counts[i] == maxCount) { worstExcuses.push_back(excuseList[i]); } } // Output the result cout << "Excuse Set #" << setNumber << endl; for (const auto& we : worstExcuses) { cout << we << endl; } cout << endl; setNumber++; } return 0;}

    代码解释

  • 读取输入: 使用scanf函数读取输入数据,首先读取K和E,然后读取K个关键词和E个借口。
  • 存储关键词: 将关键词存储在map中,确保快速查找。
  • 处理借口: 将每个借口转换为小写,检查其中是否包含任何关键词。遍历所有可能的子字符串长度,检查是否存在于关键词集合中。
  • 计算出现次数: 对于每个借口,计算关键词出现的总次数。
  • 找出最糟糕的借口: 比较所有借口的出现次数,找出最多的,并收集所有具有相同最大次数的借口。
  • 输出结果: 输出每个数据集的结果,包括编号和最糟糕的借口,每个借口占一行,最后用空行分隔。
  • 上一篇:sdtest20210118题解
    下一篇:Persistent Numbers

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年05月11日 20时06分07秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    2024年度“金智奖”揭晓:绿盟科技获双项大奖,创新驱动网络安全新高度。从零基础到精通,收藏这篇就够了! 2023-01-24
    2024年最流行的十大开源渗透测试工具 2023-01-24
    005从零开始学Python—字符串处理 2023-01-24
    2024年网络安全八大前沿趋势,零基础入门到精通,收藏这篇就够了 2023-01-24
    2024年薪酬最高的五个网络安全职位,零基础入门到精通,收藏这一篇就够 2023-01-24
    2024年非科班的人合适转行做程序员吗? 2023-01-24
    2024数字安全创新性案例报告,从零基础到精通,收藏这篇就够了! 2023-01-24
    2024最新最全CTF入门指南(非常详细)零基础入门到精通,收藏这一篇就够了 2023-01-24
    2024最新科普什么是大模型?零基础入门到精通,收藏这篇就够了 2023-01-24
    2024最新程序员接活儿搞钱平台盘点 2023-01-24
    2024最火专业解读:信息安全(非常详细)零基础入门到精通,收藏这一篇就够了 2023-01-24
    (插播)unity的 异常捕捉和 ios Android 崩溃信息的捕捉。 2023-01-24
    2024版最新SRC漏洞挖掘思路手法(非常详细),零基础入门到精通,收藏这一篇就够了 2023-01-24
    2024版最新渗透测试零基础入门教程,带你入门到精通(超详细),收藏这篇就够了 2023-01-24
    2024版最新网络安全入门必备读书清单(非常详细)零基础入门到精通,收藏这一篇就够了 2023-01-24
    2024版最新网络安全工程师考证指南,零基础入门到精通,收藏这篇就够了 2023-01-24
    2024版最新网络安全教程从入门到精通,看完这一篇就够了 2023-01-24
    0/1背包问题——从LeetCode题海中总结常见套路 2023-01-24
    (原创)面向对象的系统对接接口编写。第5篇(完结) 2023-01-24
    2024网络安全岗就业前景如何?零基础入门到精通,收藏这篇就够了 2023-01-24