A(Phone Number)
1.暴力
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
using namespace std;
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
char a[1001][1001];
int main()
{
int N,len,tt;
while(scanf("%d",&N),N)
{
tt=0;
for(int i = 0;i<N;i++)
scanf("%s",a[i]);
int flag = 1;
qsort(a,N,sizeof(a[0]),cmp);
for(int i = 0;i<N&&flag;i++)
{
len = strlen(a[i]);
for(int j = 0;j<len&&flag;j++)
{
for(int k = i+1;k<N;k++)
{
if(a[i][j]==a[k][j])
{
tt++;
break;
}
else tt=0;
}
if(tt==len)
flag=0;
}
}
printf("%s",flag?"YES":"NO");
printf("\n");
}
return 0;
}
2.KMP
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
char a[1001][12];
int next[100001];
int cmp(const void *a,const void *b)
{
return strcmp((char *)a,(char *)b);
}
void Getnext(char s[])
{
int l=strlen(s);
next[0]=-1;
int j=-1;
int i=0;
while(i<l)
{
if(j==-1||s[i]==s[j])
{
i++;
j++;
next[i]=j;
}
else j=next[j];
}
}
int main()
{
int n,flag=0;
while(scanf("%d",&n)!=EOF&&n!=0)
{
flag=0;
for(int i=0;i<n;i++)
scanf("%s%*c",a[i]);
qsort(a,n,sizeof(a[0]),cmp);
for(int i=1;i<n;i++)
{
Getnext(a[i-1]);
int k=0,k1=0;
while(k<strlen(a[i])&&k1<strlen(a[i-1]))
{
if(k1==-1||a[i][k]==a[i-1][k1])
{
k++;
k1++;
}
else k1=next[k1];
}
if(k1-strlen(a[i-1])==0)
{
printf("NO\n");
flag=1;
break;
}
}
if(flag==0) printf("YES\n");
}
return 0;
}
C(Hello World!)
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
struct node
{
int x,y;
}q[1001],q1[1001];
int cmp(const void *a,const void *b)
{
struct node *aa=(struct node *)a;
struct node * bb=(struct node *)b;
if(aa->x!=bb->x)
return aa->x-bb->x;
else return aa->y-bb->y;
}
int main()
{
int N,flag,k=0;
while(scanf("%d",&N)!=EOF&&N!=0)
{
k++;
for(int i=0;i<N;i++)
{
scanf("%d%d",&q[i].x,&q[i].y);
q1[i].x=q[i].x;
q1[i].y=q[i].y;
}
qsort(q1,N,sizeof(q1[0]),cmp);
printf("Case %d:\n",k);
for(int i=0;i<N;i++)
{
flag=1;
for(int j=1;j<N;j++)
{
if(q[i].x<q1[j].x&&q[i].y<q1[j].y)
{
printf("%d %d\n",q1[j].x,q1[j].y);
flag=0;
break;
}
}
if(flag) printf("-1 -1\n");
}
printf("\n");
}
return 0;
}
G(shopping)
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
using namespace std;
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int a[100001];
int main()
{
int N;
while(scanf("%d",&N)!=EOF&&N!=0)
{
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
qsort(a,N,sizeof(a[0]),cmp);
printf("%d\n",2*(a[N-1]-a[0]));
}
return 0;
}