CCF认证 2018-09-3 元素选择器(50分)(模拟+dfs)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Miranda_ymz/article/details/84891484

水了一个50分再说。

CCF认证 2018-09-3 元素选择器

题意:给你html的一些结构,让你找出给定标签元素的个数以及位置。

思路:看数据范围可以看出,可以水一个50分,有50个测试点只需要简单记录标签和后代,然后顺序找一边就可以拿到50,但是要全拿的话,后面的处理还是挺麻烦的,因为要建立一个树,查询也是一个个嵌套的。想看完全解可以参考这个大佬的

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//目标就拿个50分--嘻嘻嘻 
string p[110],q[110];
int add[110];
int main()
{
	int n,m;
	string str;
	scanf("%d%d",&n,&m);
	getchar();
	for(int i=0;i<n;i++)
	{
		getline(cin,str);
		p[i]="",q[i]="";
		int flag=0;
		for(int j=0;j<str.size();j++)
		{
			if(str[j]=='.') continue;
			if(str[j]==' '){
				flag=1;continue;
			}
			if(!flag) p[i]+=tolower(str[j]);
			else q[i]+=str[j];
		}
		//cout<<p[i]<<" "<<q[i]<<endl;		
	}
	while(m--)
	{
		int cnt=0;
		getline(cin,str);
		if(str[0]!='#') 
		for(int i=0;i<str.size();i++) str[i]=tolower(str[i]);
		for(int i=0;i<n;i++)
			if(str==p[i]) add[cnt]=i+1,cnt++;
		for(int i=0;i<n;i++)
			if(str==q[i]) add[cnt]=i+1,cnt++;
		printf("%d",cnt);
		for(int i=0;i<cnt;i++)
		printf(" %d",add[i]);
		printf("\n");
	}
	return 0;	
}

猜你喜欢

转载自blog.csdn.net/Miranda_ymz/article/details/84891484