论文搜索(158)

##字符串处理
allenlowesy突然从Marswind那里得知,光纤技术要结课了,期末考试内容是一篇论文。allenlowesy以为可以不动脑筋地水过去,但是那位他从来没有见过的老师却规定,论文字数不得少于2000字,更要命的是,参考文献必须是IEEE或者CSA的论文。
众所周知,IEEE上有很多很多很多很多论文。当allenlowesy打开IEEE的搜索界面寻找关键词为fiber的论文时,系统返回给他一大堆结果。
allenlowesy纠结了,他不可能把所有的论文都看了来确定是否有用。于是他假设,如果论文的标题中有一个单词是关键词(大小写也要一致),那么这篇论文是有用的。
现在allenlowesy需要从搜索结果中找到这些他认为有用的论文,那么这些论文有多少呢?
Standard Input
含多组测试数据,输入首先是一个整数T表示测试数据组数(T≤20)。
每组数据开始为一个整数N(N≤100),表示检索到的论文数
接下来1行是allenlowesy搜索的关键词,长度不超过20,只包括小写字母和大写字母。
接下来N行,每一行是一个论文的标题,长度不超过100,只包括小写字母、大写字母和空格。
Standard Output
每组数据输出一个整数M,表示allenlowesy认为有用的论文数。
如果没有一篇论文的标题包含有关键词,则输出Do not find。
在每组输出结果后再输出一个空行。

题目分析:判断每一个字符串中的单词是否匹配的问题。

#include<stdio.h>
int main(void)
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		char kw[21],c;
		int n,m=0,num=0;
		scanf("%d",&n);
		getchar();
		while((c=getchar())!='\n')
		{
			kw[m]=c;
			m++;
		}
		while(n--)
		{
			char title[101];
			int i=0,j=0,k,m1=0;
			while((c=getchar())!='\n')
			{
				title[m1]=c;
				m1++;
			}
			while(i<m1)
			{
				j=0;
				k=i;
				if(kw[j]==title[i])
				do{
					i++;j++;
				}while(kw[j]==title[i]&&j<m);
				else i++;
				if(k==0||title[k-1]==' ')
				{
				if(j==m&&title[i]==' ') 
				{
					num++;break;
				}
				else if(j==m&&i==m1) 
				{
					num++;break;
				}
				}
			}
		}
		if(num==0) printf("Do not find\n\n");
		else printf("%d\n\n",num);
	}
	return 0;
}

给的题目和代码都不难,稍加理解就可以通过。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值