POJ1598

题目大意:

我的理解:

暴力。


我的code:

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int n,m;	//n个关键词,m个句子
int num[40];	//用于存储一个句子中关键词的个数 
char str[30][80];	//用于存储关键词 
char s[30][100]; 	//用于存储句子
 
int cmp(char c){	//该函数用于从一个句子中解析出字母 
	if((c>='a' && c<='z') || (c>'A' && c<'Z')){
		return 1;
	}else{
		return 0;
	}
} 
int main()
{
	int maxn;	//用于记录最跛脚的借口
	int q = 1;	//用于输出时的计数,看到最后就懂了 
	freopen("D:/OJ/挑战程序设计竞赛/POJ.txt","r",stdin);
	while(scanf("%d%d", &n, &m) != EOF){
		getchar();	//吸取一个字符 
		for(int i = 0;i<n;i++){
			cin>>str[i];	//输入关键字 
		}
		getchar();	//吸取一个字符 
		memset(num,0,sizeof(num));	//将num数组置零 
		maxn = 0;	
		for(int i = 0;i<m;i++){
			char ch[100];
			gets(s[i]);	//输入句子 
			int len = strlen(s[i]);	//这个句子的长度 
			for(int j = 0;j<len;j++){	//一直遍历到句子结束 
				int a = 0;				
				while(cmp(s[i][j])){	//从句子中解析出单词 ,遇到非字母将停止while循环 
					if(s[i][j] >= 'A' && s[i][j] <= 'Z'){
						ch[a++] = s[i][j]+32;
					}else{
						ch[a++] = s[i][j];
					}
					j++;
				}
				if(a>0){				//如果a>0,代表已经解析到单词 
					int k;
					ch[a] = '\0';		
					for(k = 0;k<n;k++){
						if(strcmp(ch,str[k]) == 0){	//判断解析出的单词与关键词是否相等 
							break;
						}
					}
					if(k < n){						//代表上面的for循环没有结束就跳出了,意思就是找到与关键词相同的单词了 
						num[i]++;
					}
				}
			}
			maxn = max(maxn,num[i]);				//从这么多句子里选出含关键词最多的句子 
		}
		cout<<"Excuse Set #"<<(q++)<<endl;			//输出结果 
		for(int i = 0;i<m;i++){	
			if(num[i] == maxn)
				cout<<s[i]<<endl;
		}
		cout<<endl;
	}	
	return 0;
} 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值