博客
关于我
【PAT乙级】1003 我要通过!
阅读量:190 次
发布时间:2019-02-28

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

为了解决这个问题,我们需要编写一个自动裁判程序,判断给定的字符串是否满足特定的条件,从而输出“答案正确”或“答案错误”。

方法思路

  • 输入处理:读取输入的字符串数量和每个字符串。
  • 字符检查:确保字符串只包含P、A、T三种字符。
  • 统计字符:统计字符串中P、A、T各自的数量,并检查是否存在至少一个P和一个T。
  • 结构检查:根据题目条件,检查字符串的结构是否符合要求。具体来说,P前面的A的数量乘以P和T之间的A的数量必须等于T后面的A的数量,并且P和T之间必须至少有一个A。
  • 解决代码

    #include 
    #include
    #include
    using namespace std;
    int main() {
    int t;
    cin >> t;
    for (int i = 0; i < t; ++i) {
    string s;
    cin >> s;
    bool valid = true;
    // 检查是否只包含P、A、T
    for (char c : s) {
    if (c != 'P' && c != 'A' && c != 'T') {
    valid = false;
    break;
    }
    }
    if (!valid) {
    cout << "NO" << endl;
    continue;
    }
    // 统计P、A、T的数量
    int P = 0, A = 0, T = 0;
    int aqnum = 0, aznum = 0, ahnum = 0;
    // 遍历字符串
    for (int j = 0; j < s.size(); ++j) {
    if (s[j] == 'P') {
    ++P;
    } else if (s[j] == 'A') {
    ++A;
    } else if (s[j] == 'T') {
    ++T;
    }
    }
    if (P == 0 || T == 0) {
    cout << "NO" << endl;
    continue;
    }
    // 统计各个部分的A的数量
    int left = 0;
    int mid = 0;
    int right = 0;
    for (int j = 0; j < s.size(); ++j) {
    if (s[j] == 'A') {
    if (j < P) {
    left++;
    } else if (j > P && j < T) {
    mid++;
    } else if (j > T) {
    right++;
    }
    }
    }
    // 检查条件
    if (aznum > 0 && aqnum * aznum == ahnum) {
    cout << "YES" << endl;
    } else {
    cout << "NO" << endl;
    }
    }
    }

    代码解释

  • 输入处理:读取字符串数量t,然后逐个读取每个字符串s
  • 字符检查:遍历字符串,检查是否只包含P、A、T三种字符。如果有其他字符,标记为无效并输出“NO”。
  • 统计字符:统计字符串中P、A、T的数量。如果P或T的数量为0,直接输出“NO”。
  • 结构检查:统计P前面的A的数量(left),P和T之间的A的数量(mid),以及T后面的A的数量(right)。然后检查是否满足条件,即left * mid == rightmid > 0。满足条件则输出“YES”,否则输出“NO”。
  • 转载地址:http://nqoi.baihongyu.com/

    你可能感兴趣的文章
    NiuShop开源商城系统 SQL注入漏洞复现
    查看>>
    NI笔试——大数加法
    查看>>
    NLog 自定义字段 写入 oracle
    查看>>
    NLog类库使用探索——详解配置
    查看>>
    NLP 基于kashgari和BERT实现中文命名实体识别(NER)
    查看>>
    NLP 模型中的偏差和公平性检测
    查看>>
    Vue3.0 性能提升主要是通过哪几方面体现的?
    查看>>
    NLP 项目:维基百科文章爬虫和分类【01】 - 语料库阅读器
    查看>>
    NLP_什么是统计语言模型_条件概率的链式法则_n元统计语言模型_马尔科夫链_数据稀疏(出现了词库中没有的词)_统计语言模型的平滑策略---人工智能工作笔记0035
    查看>>
    NLP三大特征抽取器:CNN、RNN与Transformer全面解析
    查看>>
    NLP学习笔记:使用 Python 进行NLTK
    查看>>
    NLP度量指标BELU真的完美么?
    查看>>
    NLP的不同研究领域和最新发展的概述
    查看>>
    NLP的神经网络训练的新模式
    查看>>
    NLP采用Bert进行简单文本情感分类
    查看>>
    NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
    查看>>
    NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
    查看>>
    NLP:使用 SciKit Learn 的文本矢量化方法
    查看>>
    nmap 使用方法详细介绍
    查看>>
    Nmap扫描教程之Nmap基础知识
    查看>>