问题如下:
我的代码:
#include <stdio.h>
int main(){
int i;
scanf("%d",&i);
char s[101];
for(;i>0;i--){
scanf("%s",&s);
int check=0;
int p=0;
if(s[check]=='A'){
check++;
if(s[check]!='A'){
p=1;
}
while(s[check]=='A'){
check++;
};
if(s[check]!='P'){
p=1;
}
check++;
if(s[check]!='A'){
p=1;
}
while(s[check]=='A'){
check++;
};
if(s[check]!='T'){
p=1;
}
check++;
while(s[check]!='\0'){
if(s[check]!='A'){
p=1;
}
check++;
}
if(p==1) printf("NO");
if(p==0) printf("YES");
if(i!=1) printf("\n");
}
else if(s[check]!='A'){
if(s[check]!='P'){
p=1;
}
check++;
if(s[check]!='A'){
p=1;
}
while(s[check]=='A'){
check++;
};
if(s[check]!='T'){
p=1;
}
check++;
while(s[check]!='\0'){
if(s[check]!='A'){
p=1;
}
check++;
}
if(p==1) printf("NO");
if(p==0) printf("YES");
if(i!=1) printf("\n");
}
}
return 0;
}
测试结果如下:
请问下我最后一个测试点错误出在哪里?
我大概用状态转移表写了一个
问题的核心是:在形如 aPbTc的串中,存在关系a*b==c,即a中A的数量乘上b中A的数量应等于c中A的数量(b>0)
我的AC代码如下
#include <stdio.h>
int main(int argc, char const *argv[])
{
int a = 0;
scanf("%d", &a);
char buffer[101];
for (int i = 0; i < a; i++)
{
scanf("%s", buffer);
int status = 0;
int pre = 0, mid = 0, after = 0;
for (int j = 0; buffer[j] != '\0'; j++)
{
if (buffer[j] == 'A')
{
if (status == 0)
pre++;
else if (status == 1 || status == 2)
{
mid++;
status = 2;
}
else if (status == 3)
after++;
}
else if (buffer[j] == 'P' && status == 0)
status = 1;
else if (buffer[j] == 'T' && status == 2)
status = 3;
else
{
status = 0;
break;
}
}
if (status == 3)
{
if (after == pre * mid)
printf("YES\n");
else
printf("NO\n");
}
else
printf("NO\n");
}
return 0;
}
有帮助望采纳~
#include <stdio.h>
// Verifies the string has the pattern of A*PA+TA*.
int verify(char *s)
{
if (*s == '\0')
return 0;
// Match A*
while (*s && *s == 'A')
s++;
// Match P
if (*s && *s == 'P')
{
// Match A
s++;
if (*s && *s == 'A')
{
while (*s && *s == 'A')
s++;
// Match T
if (*s && *s == 'T')
{
s++;
// Match A*
while (*s && *s == 'A')
s++;
return *s == '\0';
}
}
}
return 0;
}
int main()
{
int n;
char s[100];
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
scanf("%s", s);
if (verify(s))
printf("YES\n");
else
printf("NO\n");
}
}