CSP 元素選擇器

2021-10-07 03:43:19 字數 1703 閱讀 6959

在一開始做這題的時候我直接構造了棵樹來儲存題目給出的html文件,但是後面遇到了各種奇奇怪怪的bug,感覺修不過來了,就重新構思了一遍。然後發現其實不需要用樹來儲存,直接陣列儲存就行了。思路如下:用陣列記錄下輸入的html文件,用vector記錄選擇器。非後代選擇器的查詢,只要遍歷一邊陣列,判斷其屬性是否符合條件,符合則將其行號壓入結果vector。對於後代選擇器,則是在上面的基礎上增加了乙個步驟:判斷其它的資訊是否滿足。詳細來說就是在元素陣列中,從被選擇元素開始往前,與vector中元素一一對照,直到兩邊有一邊元素對照完畢,若是vector中元素對照完畢則說明滿足條件,否則不滿足。將滿足條件的行號壓入結果vector。最後輸出結果vector中節點數目及結果vector即可。注:這一題字元處理較為麻煩,還有要注意label的小寫化。

#include

#include

#include

#include

#include

using

namespace std;

vector qus;

vector<

int> ans;

struct element

;element e[

105]

;bool

judge

(int x)

}return

false;}

intmain()

if(plabel==-1

&&s[j]

!='#'

) plabel=j;

else

if(s[j]

=='#'

) pid=j;

} e[i]

.level=cnt/2;

if(pid==-1

) e[i]

.lable=s.

substr

(plabel)

;else

transform

(e[i]

.lable.

begin()

, e[i]

.lable.

end(

), e[i]

.lable.

begin()

,::tolower);}

for(

int i=

0;i)int sz=qus.

size()

;for

(int j=

1;j<=n;j++)}

cout<

size()

;for

(int j=

0;jsize()

;j++

) cout<<

"\n";}

}

CSP 元素選擇器

思路參考 傳送門 唯一遇到的坑是選擇器也是可以重複出現在一條查詢裡的,而不是只能出現在最後。includeusing namespace std vectorres 儲存祖先 vectorqus 儲存查詢 vectorans 儲存答案 struct nodee 105 void tolower st...

csp模擬 元素選擇器

這個模擬題需要記錄的是結構化文件,結構化文件需要記錄的有 標籤 id屬性 以及有層次的包含關係。使用struct記錄 struct node 然後是如何讀入這個具有層次的結構化文件 首先用vector node nodes記錄每一行的文件內容 也記錄了這一行的下標 然後stack node pare...

csp 201809 3 元素選擇器

題目描述 201809 3 試題名稱 元素選擇器 時間限制 1.0s 記憶體限制 256.0mb 題目背景 題目描述 由題可知,結構化文件由元素組成,而這些元素是以一棵樹得形式組織起來的。我們這裡使用結構體來儲存每乙個元素,結構體內包含元素標籤 name 元素id id 元素所在層級 level用於...