运行 出来 结果 对 了 为什么 提交 到 PAT 上 去 一 个 测试点 过 不 了
引用 4 楼 coo135 的 回复 : 智商 有限 ， 这 道 题目 实在 是 看 不 懂 啊 … … 能 弄 明白 在 讲 什么 的 真 是 神仙 啊 ！ ！！ 百度 到 有 位 神仙 他 明白 ， 解释 如下 ： 解决 问题 的 关键 是 第二 个 和 第三 个 要求 。 （ 1 ） 第二 个 要求 说明 了 a 的 长度 和 c 的 长度 是 相等 的 ， 所以 我们 可以 列出 一 个 等式 ： lena = lenc ； （ 2 ） 第三 个 要求 则 说明 ， 在 第二 个 条件 成立 的 条件 下 ， 将 aPATc 中 的 A 字符 换成 b 串 ， 变为 aPbTc 。 如果 该 字符串 正确 ， 那么 aPbATac 字符串 也 正确 。 仔细 观察 不 难 发现 ， P 和 A 字符 中间 多 加 了 一 个 A 字符 ， 而 字符串 末尾 c 串 后面 则 加 了 一 个 a 串 。 也就是说 ， c 串 后面 加 的 a 串 的 个数 与 P 字符 和 T 字符 中间 加入 的 A 字符 的 个数 相等 。 假设 b 含有 lenb 个 A 字符 ， 那么 新 加入 的 A 字符 的 个数 就 是 （ lenb - 1 ） 个 ( 因为 为了 保证 字符串 正确 ， b 中 最 起码 要 有 一 个 A 字符 ) 。 所以 c 串 后面 的 a 串 个数 也 就 是 （ lenb-1 ） 个 。 所以 可以 列出 一 个 式子 ： lenc = lenc + （ lenb - 1 ） * lena 。 由 第二 个 要求 得出 的 式子 lena = lenc 带入 得 ： lenc = lena + （ lenb - 1 ） * lena 。 化 简 上 式 即 为 ： lenc = lena * lenb 。 原来 如此 ~ ~ ~ ~ 拜 一下 ~ ~ ~ 这样 写 代码 就 简单 了 # 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 。 / / 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 ; } 我 知道 是 啥 意思 ， 我 的 代码 思路 和 你 的 一样 ， 而且 我 运行 出来 的 结果 都 是 对 的 。 只是 提交 进 PAT 测试点 全 错 了 。 我 刚 又 在 牛客网 上 去 提交 了 一 遍 发现 全 过 了 ， 这 不 是 我 第一 次 碰到 这 种 情况 了 。 我 觉得 PAT 的 判题 系统 可能 有 BUG
