POJ1598

来源:互联网 发布:淘宝摄影店 编辑:程序博客网 时间:2024/05/17 23:38

题目大意:

我的理解:

暴力。


我的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;} 



原创粉丝点击