版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}