uva10887Concatenation of Languages
[cpp]#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cmath>
#include<set>
#include<cstring>
#include <algorithm>
#define M 5368
#define N 2250000
#define inf 0x7f7f7f7f
using namespace std;
char str[N][20];
char a[1500][10],b[1500][10];
int head[N],next[N];
int hash(char a[])////////////
{
int sum=0;
for(int i=0; a[i]&&i<10; i++)//不同的方法,效率不同
{
sum=sum*26+a[i]-'a'+1;
}
if(sum<0)
sum=-sum;
return sum%N;
}
int insert(char a[],int r)
{
int h=hash(a);//h还会用到,要保留!!wa
// h=head[h];//错误
int p=head[h];////
while(p!=-1)
{
if(!strcmp(a,str[p]))
return 0;
p=next[p];
}
next[r]=head[h];
head[h]=r;
return 1;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("ex.in","r",stdin);
#endif
int n,t,m,ncase=0;
scanf("%d",&t);
while(t--)
{
memset(head,-1,sizeof(head));
scanf("%d%d%*c",&m,&n);
for(int i=0; i<m; i++)
gets(a[i]);
for(int i=0; i<n; i++)
gets(b[i]);
int r=0; www.zzzyk.com
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
{
strcpy(str[r],a[i]);
strcat(str[r],b[j]);
if(insert(str[r],r))
++r;
}
printf("Case %d: %d\n",++ncase,r);
}
return 0;
}
补充:软件开发 , C++ ,