Skip to content

Commit f9e5dd7

Browse files
committed
20190627
1 parent 8b7415f commit f9e5dd7

File tree

2 files changed

+144
-0
lines changed

2 files changed

+144
-0
lines changed

PAT1002.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,35 @@ int main()
3737
system("pause");
3838
return 0;
3939
}
40+
// 太菜了,手生了,都忘了int转cstring用sprintf()就好了
41+
42+
// #include <iostream>
43+
// #include <string>
44+
// #include <cstring>
45+
// using namespace std;
46+
// const string pinyin[10] =
47+
// {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
48+
49+
// int main()
50+
// {
51+
// char s[100];
52+
// char m[4];
53+
// scanf("%s",s);
54+
// int i,j,len1,len2,sum=0;
55+
// len1=strlen(s);
56+
// for(i=0;i<len1;i++)
57+
// {
58+
// sum+=s[i]-'0';
59+
// }
60+
// sprintf(m,"%d",sum);
61+
// len2=strlen(m);
62+
// for(j=0;j<len2;j++)
63+
// {
64+
// cout << pinyin[m[j] - '0'];
65+
// if(j!=len2-1) printf(" ");
66+
// }
67+
// return 0;
68+
// }
4069

4170
// 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
4271

PAT1003.cpp

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
#include <iostream>
2+
#include <string>
3+
using namespace std;
4+
5+
bool Judge(string s, int P, int A, int T, string a, string b, string c) {
6+
// 要有PAT
7+
if (P == string::npos || A == string::npos || T == string::npos)
8+
{
9+
return false;
10+
}
11+
for (size_t i = 0; i < s.length(); i++)
12+
{
13+
// 除了PAT不能有别哒
14+
if (s[i] != 'P' && s[i] != 'A' && s[i] != 'T')
15+
{
16+
return false;
17+
}
18+
}
19+
// 其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
20+
for (size_t i = 0; i < a.length(); i++)
21+
{
22+
if (a[i] != 'A')
23+
{
24+
return false;
25+
}
26+
}
27+
for (size_t i = 0; i < b.length(); i++)
28+
{
29+
if (b[i] != 'A')
30+
{
31+
return false;
32+
}
33+
}
34+
for (size_t i = 0; i < c.length(); i++)
35+
{
36+
if (c[i] != 'A')
37+
{
38+
return false;
39+
}
40+
}
41+
42+
// 情况2
43+
// 情况二b一定为A,ac相等
44+
if (b == "A" && a != c)
45+
{
46+
return false;
47+
}
48+
// 情况3
49+
if (c.length() != a.length() * b.length())
50+
{
51+
return false;
52+
}
53+
return true;
54+
}
55+
56+
int main()
57+
{
58+
int n;
59+
cin >> n;
60+
while (n--)
61+
{
62+
string s;
63+
string a, b, c, x;
64+
cin >> s;
65+
int P = 0, A = 0, T = 0;
66+
P = s.find_first_of('P');
67+
A = s.find_first_of('A');
68+
T = s.find_first_of('T');
69+
a = s.substr(0, P);
70+
b = s.substr(P + 1, T - P - 1); // substr()第二个参数为子字符串长度
71+
c = s.substr(T + 1, s.length());
72+
if (Judge(s, P, A, T, a, b, c))
73+
cout << "YES" << endl;
74+
else
75+
cout << "NO" << endl;
76+
}
77+
system("pause");
78+
return 0;
79+
}
80+
// 题目描述也太晦涩了吧
81+
82+
// 答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。
83+
84+
// 得到“答案正确”的条件是:
85+
86+
// 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
87+
// 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
88+
// 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。
89+
// 现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。
90+
91+
// 输入格式:
92+
// 每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。
93+
94+
// 输出格式:
95+
// 每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。
96+
97+
// 输入样例:
98+
// 8
99+
// PAT
100+
// PAAT
101+
// AAPATAA
102+
// AAPAATAAAA
103+
// xPATx
104+
// PT
105+
// Whatever
106+
// APAAATAA
107+
// 输出样例:
108+
// YES
109+
// YES
110+
// YES
111+
// YES
112+
// NO
113+
// NO
114+
// NO
115+
// NO

0 commit comments

Comments
 (0)