问题遇到的现象和发生背景
PAT 乙级练习题 1003 我要通过 无法全部通过测试样例
问题相关代码,请勿粘贴截图
#include <iostream>
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[101] = {0};
char result[10][4] = {0};
int n = 0;
int i = 0,j = 0;
int t_num = 0, p_num = 0, a_num = 0, p_cnt = 0,t_cnt = 0, enter_num = 0;
std::cin >> n;
for (i = 0; i < n; i++)
{
t_num = 0, p_num = 0, a_num = 0, p_cnt = 0, t_cnt = 0, enter_num = 0;
std::cin >> str;
//enter_num = strlen(str);
for (j = 0; j < 100; j++)
{
if (str[j] != '\0')
{
if ((str[j] != 'P') && (str[j] != 'A') && (str[j] != 'T'))
{
strncpy(result[i], "NO", sizeof(result[i]) - 1);
break;
}
if (str[j] == 'P')
{
p_num = j;
p_cnt += 1;
}
if (str[j] == 'T')
{
t_num = j;
t_cnt += 1;
}
}
else
{
enter_num = j;
break;
}
}
if ((t_num - p_num <= 1) || (t_cnt != 1) || (p_cnt != 1))
{
strncpy(result[i], "NO", sizeof(result[i]) - 1);
}
else if (p_num * (t_num - p_num - 1) != (enter_num - t_num - 1))
{
strncpy(result[i], "NO", sizeof(result[i]) - 1);
}
else
{
strncpy(result[i], "YES", sizeof(result[i]) - 1);
}
}
for (i = 0; i < n; i++)
{
std::cout << result[i] << std::endl;
// if (i < n - 1) std::cout << std::endl;
}
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
感觉问题出在长度计算上,贴出来的代码可以通过5/6,长度计算换成strlen只能通过3/6.参考了别的答案感觉思路都是一样的,不知道问题出在哪,请大家帮我看看