時間限制
1.0s
記憶體限制
考慮到有多級標籤,因此設定標籤結構體,儲存標籤樣式label、屬性id、以及所在的極數grade。
以樣例來說。
html所在為0級,向後等級依次遞增。可得出等級=.的數量/2
注意將label轉換成小寫。
2. 一次儲存完標籤後,對輸入的每乙個選擇進行相似處理。用乙個vector< string >來儲存多級選擇。(把每一種選擇都看作多級選擇)。處理每乙個選擇,如果乙個選擇的開頭不是#,將其轉換成小寫。
3. 倒序遍歷標籤陣列,並倒序進行選擇匹配,一旦遇到和選擇相匹配的標籤或者標籤的屬性,記錄該位置,從該位置向前去尋找它上一級是否有匹配下乙個選擇的。如果有繼續向上匹配,如果沒有,結束此次匹配,進行下一輪匹配。
4. 需要注意vector和string的大小,注意不要超出記憶體。
#include
#include
#include
#include
#include
using
namespace std;
struct order};
order orders[
110]
;void
_strlwr
(string &s)
//轉換為小寫}}
intmain()
orders[i]
.grade = grade /2;
string label;
int f =0;
while
(grade < tsize)
//得到label和id
//判斷是label還是id
if(f ==0)
else
grade++;}
}//測試輸出
/*cout << "orders: " << endl;
for (int i = 1; i <= n; i++)
*/for(
int i =
1; i <= m; i++
)//輸入元素選擇器,並進行選擇
if(tstr[0]
!='#'
) vec.
push_back
(tstr)
; tstr.
clear()
; index++;}
csize =
(int
)vec.
size()
-1;//測試輸出
/*cout << "vec: ";
for (int j = csize; j >= 0; j--)
cout << endl;*/
for(
int j = n; j >=
1; j--)}
}if(flag ==
false
)//向上一級沒有匹配成功,直接退出
tempsize--
;//匹配成功再進行向上一級的匹配}if
(tempsize <0)
//每一級都匹配成功了}}
//輸出結果
cout << ans.
size()
;for
(int j = ans.
size()
-1; j >=
0; j--
) cout << endl;
}}
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...