模拟题,细心细心再细心,整个结构是一个树型的结构。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
using namespace std;
typedef long long ll;
const int inf=0x3f3f3f3f;
const double epos=1e-8;
char s[109][89];
char qq[89];
int id_qi[109];//记录每个标签的id起始点,没有则为0;
int dian[109];//记录s[i]的点的个数;
int a[109];//记录每次查询的结果;
int v[109];//多级查询时,分割串;
int main(){
int n,q;
scanf("%d%d",&n,&q);
getchar();
for(int i=1; i<=n; ++i){
fgets(s[i],89,stdin);
int t=strlen(s[i]);
--t;
s[i][t]='\0';//fgets()使用时会多吸收一个换行符到字符串中,所以需要将长度减一;
int j=0;
for(; j<t; ++j){
if(s[i][j]=='#'){
id_qi[i]=j;
break;
}
if(s[i][j]=='.')
++dian[i];
else if(s[i][j]>='A'&&s[i][j]<='Z')//将标签变为小写字母;
s[i][j]+=32;
}
}
while(q--){
int l=0;
fgets(qq,89,stdin);
int lq=strlen(qq);
--lq;
qq[lq]='\0';
//分割串;
int h=0;
v[0]=0;
int lv=1;
for(int i=0; i<lq; ++i){
if(qq[i]==' ')
+