本文主要是介绍PAT Basic Level 1003 我要通过 解题思路及AC代码 v0.99,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
PAT 1003 我要通过!
- 1. 题目描述及在线测试位置
- 2. 具体实现
- 2.1 基本思路
- 2.2 AC代码
1. 题目描述及在线测试位置
PAT 1003 我要通过!
2. 具体实现
2.1 基本思路
‘答案正确’需要满足如下条件
(1) 不能出现P A T之外的字符、 P A T 三个字符必须都出现、 字符P T只能出现一次
(2) A可以出现多次,但是必须符合:P之前A的数量 × P T中间A的数量 = T之后A的数量
2.2 AC代码
2021.9.6:已优化
#include <string>
#include <iostream>
using namespace std;int main()
{int Num, LeftA, MiddleA, RightA;int P_flag, T_flag,Other_flag;string str;cin >> Num;while (Num--){LeftA = MiddleA = RightA = 0;P_flag = T_flag = Other_flag = 0;cin >> str;for (int i = 0; str[i] != '\0'; i++){if (str[i] == 'P'){P_flag++;continue;} else if (str[i] == 'T'){T_flag++;continue;} else if (str[i] != 'A'){Other_flag++;break;}if (!P_flag && !T_flag)LeftA++;else if (P_flag && !T_flag)MiddleA++;else if (P_flag && T_flag)RightA++; }// CheckPoint: 'P' and 'T' can only exist once AND 'P' 'A' 'T' must exist!if ( T_flag!=1 || P_flag!=1 || Other_flag) {cout << "NO" << endl;continue;}//CheckPoint: LeftA * MiddleA == RightAif (LeftA * MiddleA == RightA && MiddleA) cout << "YES" << endl;elsecout << "NO" << endl;}return 0;
}
这篇关于PAT Basic Level 1003 我要通过 解题思路及AC代码 v0.99的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!