對於標籤以及id選擇器,只需在g中找到對應tag、id符合的即可,對於後代選擇器x1 x2 x3…xn,我們首先找出最底層xn對應的元素,將它們放入vectorres的容器中,之後對於res中每乙個元素,設定乙個值y表示它還要尋找的祖先節點數,從這個元素向上依次尋找父節點,若找到節點滿足後代選擇器倒數第二個的元素,y–,接著向上尋找是否存在滿足後代選擇器倒數第二個元素的祖先節點…直到找到空的祖先節點或者y小於0。
若最後y小於0,說明找到了滿足後代選擇器中所有元素要求的元素。
對res中每個元素重複上述過程即可得到後代選擇器結果。
#include
#include
#include
#include
#include
using
namespace std;
struct directory};
int n,m,z;
string s,tag,id,com;
vector c;
vector
> g;
directory* cache;
vector
>
findans()
}else}}
else
int h=res.
size()
;for
(int k=
0;kif(z<
0) a.
push_back
(res[k]);
}}return a;
}int
main()
int l=g.
size()
-1;while
(g[l]
->cengshu!=num-
1) l--
; cache=g[l]
; directory *now=
newdirectory
(num,i,t,id,cache)
; g.
push_back
(now);}
//getchar();
//for(int j=0;jtag
(int j=
1;j<=m;j++
) vector
> ans;
ans=
findans()
; cout<
size()
;for
(int i=
0;isize()
;i++
) cout<<
" "<
->hangshu;
cout<
}return0;
}
201809 3 元素選擇器
ccf201809的第三題 題目就不粘上來了!設計思路 首先要用乙個結構體來儲存每一行文件,有等級 標籤以及id。其次需要注意的是標籤不區分大小寫!對於選擇器,大致可以分為兩種,第一種是只有單個的標籤或者id,這種直接遍歷文件即可 也就是我們處理過後的結點陣列 第二種是分層的,這種我們需要從選擇器的...
201809 3 元素選擇器
模擬題,細心細心再細心,整個結構是乙個樹型的結構。include include include include include includeusing namespace std typedef long long ll const int inf 0x3f3f3f3f const double...
201809 3 元素選擇器
試題編號 201809 3 試題名稱 元素選擇器 時間限制 1.0s 記憶體限制 256.0mb 問題描述 注意 1 乙個元素的祖先是緊接著其上的縮排小於等於其縮排的那些元素 連續的區域 中的縮排小於其縮排的元素 沒有等於的元素,等於的元素只是起一種連線作用 2 後代選擇器只能是多個id或者是多個l...