【HDU 1797】【水题】Match the string

2016-12-02 12:52:34来源:网络收集作者:Worker人点击

其实题很水的,一开始想用sscanf做,做了半天。。懵逼了。限时训练还是老老实实来做吧。。。用不优雅的解法做的。。sscanf还需要继续了解,上次IP地址那题也是不清不楚的过的。半期考后吧。。。


#include "stdio.h"
#include "string.h"
char s[100005];
int f1(int n)
{
for (int i = 0; i < n; ++i)
{
if(s[i]!='a')
return 0;
}
return 1;
}
int f2(int n,int m)
{
// printf("aa/n");
if(s[n]=='d')
{
// printf("a/n");
for (int i = n+1; i < m; ++i)
{
if(s[i]!='d')
return 0;
}
return 1;
}
else if(s[n]=='b')
{
// printf("b/n");
if(s[n+1]=='d')
{
for (int i = n+1; i < m; ++i)
{
if(s[i]!='d')
return 0;
}
return 1;
}
else if(s[n+1]!='h')
return 1;
else
return 0;
}
return 0;
}
int f3(int n,int m)
{
for (int i = n; i < m; ++i)
{
if(s[i]!='f' && s[i]!='k')
return 0;
}
return 1;
}
int main(int argc, char const *argv[])
{
int num;
char a1[]="ba";
scanf("%d",&num);
getchar();
while(num--)
{
memset(s,0,sizeof(s));
scanf("%s",s);
getchar();
char *p1=strstr(s,a1);
char *p2=strchr(s,'h');
if(p2==NULL || p1==NULL)
{
printf("NO/n");
continue;
}
int flag1=p1-s;
int flag2=p2-s;
if(flag2 && flag1)
{
//printf("1/n");
if(f1(flag1)==0)
{
printf("NO/n");
continue;
}
//printf("2/n");
if(f2(flag1+2,flag2)==0 && flag2!=flag1+2)
{
printf("NO/n");
continue;
}
// printf("3/n");
if(f3(flag2+1,strlen(s))==0)
{
printf("NO/n");
continue;
}
printf("YES/n");
}
else
printf("NO/n");
}
return 0;
}

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台