PATbasic1003

来源:互联网 发布:fc存储网络 编辑:程序博客网 时间:2024/06/16 06:18
#include "stdafx.h"#include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int main(){vector<string> vec;int n, i;cin >> n;for (i = 0; i < n; i++) {string s;cin >> s;vec.push_back(s);}for (i = 0; i < n; i++) {if (vec[i].length() == 3) {if (vec[i].compare("PAT") == 0) cout << "YES" << endl;else cout << "NO" << endl;}else if (vec[i].length() == 2) cout << "NO" << endl;else {string model, copy = vec[i];model.assign("PT");int j;for (j = 2; j < vec[i].length(); j++) model.insert(0, "A");sort(copy.begin(), copy.end());if (copy.compare(model) != 0) cout << "NO" << endl;else {if (vec[i][0] == 'T') cout << "NO" << endl;else {int front, middle;if (vec[i].find("P") >= vec[i].find("T")) cout << "NO" << endl;else {for (front = 0; vec[i][front] != 'P'; front++);for (middle = front + 1; vec[i][middle] != 'T'; middle++);middle -= front + 1;if (front*middle == vec[i].length() - front - middle - 2) cout << "YES" << endl;else cout << "NO" << endl;}}}}}    return 0;}

设P前有a个A,PT之间有b个,T后面有c个,那么c=a*b。此结论为通过找规律推断出的。需要单独考虑下字符串长度为2或3的情况。 
原创粉丝点击