比赛 20120323 评测结果 AAWAAAAAWWWWWWW
题目名称 加利福尼亚旅店 最终得分 46
用户昵称 Yeehok 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-03-23 21:31:38
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
struct charing
{
	char str[51];
	int l;
	charing()
	{
		memset(str,0,sizeof(str));
		l=0;
	}
};
bool chacmp(char st1,char st2)
{
	if(int(st1)==int(st2)||st1=='?'||st2=='?')
		return false;
	return true;
}
int main()
{
	freopen("hotela.in","r",stdin);
	freopen("hotela.out","w",stdout);
	int s=0;
	struct charing st;
	while(scanf("%s",&st.str)!=-1)
	{
		st.l=strlen(st.str);
		int n;
		scanf("%d",&n);
		struct charing ch;
		s=0;
		bool flag;
		for(int i=0;i<n;i++)
		{
			scanf("%s",&ch.str);
			ch.l=strlen(ch.str);
			flag=true;
			if(st.l==ch.l)
			{
				if(!strcmp(st.str,ch.str))
				{
					s++;
				}
				else
				{
					for(int j=0;j<st.l;j++)
					{
						if(chacmp(st.str[j],ch.str[j]))
						{
							break;
							flag=false;
						}
					}
					if(flag)
					{
						s++;
					}
				}
			}
			else
			{
				int j=0,k=0;
				while(1)
				{
					if(j==st.l)
					{
						if(k==ch.l)
							s++;
						break;
					}
					if(st.str[j]=='*')
					{
						j++;
						for(;k<ch.l;k++)
						{
							if(st.str[j]==ch.str[k])
								break;
						}
					}
					else if(st.str[j]=='?')
					{
						j++;
						k++;
					}
					else if(st.str[j]==ch.str[k])
					{
						k++;
						j++;
					}
					else
						break;
				}
			}
		}
		printf("%d\n",s);
	}
	return (0);
}