又是1A了的一道题目,很好~,但是用了很长时间才做出来,,,,
题目的大体意思是:先给你几个单词。然后给你几个句子,求给的几个句子中出现单词数最多的句子。如果都一样的话,都输出。
还有,句子是忽视大小写的。
做法没什么特别的,挨个比较;
#include<stdio.h>
#include<string.h>
char word[100][100];
int n,m;
int num(char *str)
{
int nn,i,j,leap,number,k;
char s[100];
nn=strlen(str);
leap=0;
j=0;
number=0;
for(i=0;i<nn;i++)
{
if(!(str[i]>='a'&&str[i]<='z'||str[i]>='A'&&str[i]<='Z'))
{
s[j]='\0';
for(k=0;k<n;k++)
{
if(strcmp(s,word[k])==0)
number++;
}
j=0;
continue;
}
s[j]=str[i];
j++;
}
return number;
}
int main()
{
int max,i,j,ss;
int numb[100];
char str[100][100];
char str1[100][100];
int leap=0;
while(scanf("%d%d%*c",&n,&m)!=EOF)
{
leap++;
for(i=0;i<n;i++)
{
gets(word[i]);
ss=strlen(word[i]);
for(j=0;j<ss;j++)
{
if(word[i][j]>='A'&&word[i][j]<='Z')
word[i][j]=word[i][j]+'a'-'A';
}
}
for(i=0;i<m;i++)
{
gets(str1[i]);
ss=strlen(str1[i]);
for(j=0;j<ss;j++)
str[i][j]=str1[i][j];
str[i][j]='\0';
for(j=0;j<ss;j++)
{
if(str[i][j]>='A'&&str[i][j]<='Z')
str[i][j]=str[i][j]+'a'-'A';
}
numb[i]=num(str[i]);
}
printf("Excuse Set #%d\n",leap);
max=0;
for(i=0;i<m;i++)
{
if(numb[i]>=max)
max=numb[i];
}
for(i=0;i<n;i++)
{
if(numb[i]==max)
{
puts(str1[i]);
}
}
printf("\n");
}
return 0;
}