uva-409 - Excuses, Excuses!

又是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;
}

















你可能感兴趣的:(uva-409 - Excuses, Excuses!)