problemscpp
A collection of my answers to algorithm problems in c++.
函数
pat::b::b1003 命名空间参考

1003 我要通过! 更多...

函数

int main (istream &cin, ostream &cout)
 
 TEST (b1003, case1)
 

详细描述

1003 我要通过!

函数说明

◆ main()

int pat::b::b1003::main ( istream &  cin,
ostream &  cout 
)

在文件 pat.cpp96 行定义.

96 {
97 int n;
98 cin >> n;
99 for(int _ = 0; _ < n; _++) {
100 string str;
101 cin >> str;
102 int p = -1;
103 int t = -1;
104 int pref_a = 0;
105 int mid_a = 0;
106 int suf_a = 0;
107 for(int i = 0; i < str.length(); i++) {
108 const char ch = str[i];
109 switch(ch) {
110 case 'P':
111 if(p != -1 || t != -1) {
112 goto NO;
113 }
114 p = i;
115 break;
116 case 'A':
117 if(p == -1 && t == -1) {
118 pref_a++;
119 } else if(p != -1 && t == -1) {
120 mid_a++;
121 } else if(p != -1 && t != -1) {
122 suf_a++;
123 } else {
124 goto NO;
125 }
126 break;
127 case 'T':
128 if(p == -1 || t != -1) {
129 goto NO;
130 }
131 t = i;
132 break;
133 default: goto NO;
134 }
135 }
136 if(p == -1 || t == -1) {
137 goto NO;
138 }
139 if(mid_a < 1) {
140 goto NO;
141 }
142 if(suf_a != mid_a * pref_a) {
143 goto NO;
144 }
145 cout << "YES" << endl;
146 continue;
147 NO:
148 cout << "NO" << endl;
149 }
150 return 0;
151 }

被这些函数引用 TEST().

◆ TEST()

pat::b::b1003::TEST ( b1003  ,
case1   
)

在文件 pat_test.cpp29 行定义.

29 {
30 istringstream in("10\n"
31 "PAT\n"
32 "PAAT\n"
33 "AAPATAA\n"
34 "AAPAATAAAA\n"
35 "xPATx\n"
36 "PT\n"
37 "Whatever\n"
38 "APAAATAA\n"
39 "APT\n"
40 "APATTAA");
41 auto out = ostringstream();
42 main(in, out);
43 const auto ans = out.str();
44 ASSERT_EQ("YES\n"
45 "YES\n"
46 "YES\n"
47 "YES\n"
48 "NO\n"
49 "NO\n"
50 "NO\n"
51 "NO\n"
52 "NO\n"
53 "NO\n",
54 ans);
55 }
int main(int argc, char **argv)
Definition: main.cpp:5

引用了 main().