<s>运行出来结果对了为什么提交到PAT上去一个测试点过不了</s>
<s>引用 4 楼 coo135 的回复:智商有限，这道题目实在是看不懂啊……</s><s>能弄明白在讲什么的真是神仙啊！</s><s>！！</s><s>百度到有位神仙他明白，解释如下： 解决问题的关键是第二个和第三个要求。</s><s>（1）第二个要求说明了a的长度和c的长度是相等的，所以我们可以列出一个等式：lena = lenc； （2）第三个要求则说明，在第二个条件成立的条件下，将aPATc中的A字符换成b串，变为aPbTc。</s><s>如果该字符串正确，那么aPbATac字符串也正确。</s><s>仔细观察不难发现，P和A字符中间多加了一个A字符，而字符串末尾c串后面则加了一个a串。</s><s>也就是说，c串后面加的a串的个数与P字符和T字符中间加入的A字符的个数相等。</s><s>假设b含有lenb个A字符，那么新加入的A字符的个数就是（lenb-1）个(因为为了保证字符串正确，b中最起码要有一个A字符)。</s><s>所以c串后面的a串个数也就是（lenb-1）个。</s><s>所以可以列出一个式子： lenc = lenc+（lenb-1）*lena 。</s><s>由第二个要求得出的式子 lena = lenc 带入得： lenc = lena + （lenb-1）*lena 。</s><s>化简上式即为 ： lenc = lena * lenb。</s><s>原来如此~~~~拜一下~~~这样写代码就简单了 #include <stdio.h> #include <string.h> // 解题关键 (len_a)P(len_b)T(len_c) // 例：AAPATAA, len_a=2，len_b=1，len_c=2 // 判断条件：len_c = len_a * len_b，并且len_b>=1。</s><s>//judge，符合要求，返回1，否则返回0 int judge(char str[]) { int len_a, len_b, len_c;// 'A' 的个数 char* p, * t; //字符串中有非'P'、'A'、'T'字符，不符合要求 for (char* s = str; *s != '\0'; s++) { if (*s != 'P' && *s != 'A' && *s != 'T') return 0; } // 找出'P'，'T' 在字符串中的位置 p = strchr(str, 'P'); t = strchr(str, 'T'); //未找到字符'P','T' 或者'T'在'P'之前，说明不符合要求 if (p == NULL || t == NULL || p > t) return 0; //求a,b,c 长度 len_a = p - str; len_b = t - p - 1; len_c = strlen(t + 1); //根据条件，进行判断 if (len_b >= 1 && len_c == len_a * len_b) return 1; else return 0; } int main() { int n; char str[10][101]; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%s", str[i]); if (judge(str[i]) == 1) printf("YES\n"); else printf("NO\n"); } return 0; } 我知道是啥意思，我的代码思路和你的一样，而且我运行出来的结果都是对的。</s><s>只是提交进PAT测试点全错了。</s><s>我刚又在牛客网上去提交了一遍发现全过了，这不是我第一次碰到这种情况了。</s><s>我觉得PAT的判题系统可能有BUG</s>
