樹 物質分解記錄

2021-10-10 03:35:05 字數 2390 閱讀 6112

總時間限制: 60000ms

單個測試點時間限制: 6000ms

記憶體限制: 131064kb

描述對 物質分解記錄 的結構進行統計分析。

例如:給出乙份 物質分解記錄。

material_1

material_8

}material_9

material_10

}material_11

material_8

}material_13

}上述記錄的含義是,material_1分解為 material_2、material_9和material_10,material_2又分解為material_3、material_4、material_5和material_8。以此類推,大括號外書寫特定物質名稱,括號內表示此特定物質分解出來的子物質名稱,每個子物質還可再分解。

現輸入乙個物質名稱r,要求輸出所有和物質r在記錄中屬於同一層次且位置在r之後的物質名稱。

比如r=「material_1」 ,則應該輸出「material_11」;

比如r=「material_9」 ,則應該輸出「material_10」

如果r在****現了多次,則以其第一次出現為準,即僅輸出與第一次出現的r屬於同一層次且位置在r之後的語句內容。

比如r=「material_2」 ,則應該輸出

material_9

material_10

輸入輸入包含多組資料。第一行是物質分解記錄的份數,僅用乙個整數表示。從第二行開始,每組資料報括 物質分解記錄 和 所需查詢的物質r 兩部分,物質分解記錄樣式如描述中所示,r的內容和物質分解記錄之間有一行空行,下乙份記錄與上乙個r之間有兩行空行。

若輸入!則表示輸入結束。

為簡單起見,物質分解記錄中每一行的內容為「」或者乙個物質名稱,不會有其他情況(比如空行)出現。同時每行文字前不會有任何縮排。物質名稱是英文本母、數字和下劃線組成的字串。

輸出對每組資料輸出一行,如果r在記錄中找到,則輸出所有與r在同一層次且位置在r之後的物質名稱,名稱之間無需新增空格,緊密連線即可;否則輸出no。若r是其所在層次中最後乙個物質,則輸出"",即輸出乙個空字元。

樣例輸入

3

material_1

material_8

}material_9

material_10

}material_2

material_1

material_8

}material_9

material_10

}material_11

material_8

}material_13

}material_2

material_1

material_8

}material_9

material_10

}material_20

樣例輸出

material_9material_10

material_9material_10

no

提示

讀入資料時,需採用如下方式進行讀取。

例:若要讀取一行輸入內容,則

cin.getline(line, linesize, '\n');

sscanf(line, "%s", tmp);

其中line和tmp為陣列指標,型別為char* ,linesize為line所指向的陣列的規模,為int型。

所需讀取的內容最終是儲存在tmp陣列中。之後如需對讀取的內容進行操作,就對tmp進行操作即可,讀到空行時tmp長度即為0。

採用其他方法讀取可能會出現wa以及re,tle。

#include #include #include #include using namespace std;

char line[1005];

struct node

};void read_line()

void delete_tree(node *root)

bool isstop = 0;

void build_tree(node *root)

if (strcmp(line, "}") == 0)

return;

else if (strcmp(line, "

else

else }}

}node *find_node(node *root, string& s)

return null;

}void print_following_node(node *p)

printf("\n");

}int main()

system("pause");

return 0;

}

小波包分解樹

小波包將原始訊號逐級向下分解。圖1為用matlab繪製的小波包分解樹,分解層數為3層。樹中節點的命名規則如下 從 1,0 開始,1,0 為1號,1,1 是2號,依次類推,3,0 是7號,3,7 是14號。每個節點都有對應的小波包係數,此係數決定了頻率的大小,即頻域資訊,節點的順序決定了時域資訊,即頻...

sizzle分析記錄 分解流程

js form div p name aaron 解析的流程 編譯器 分5個步驟 涉及 tag元素 關係選擇器 屬性選擇器 1 通過tokenize詞法分析器分組 2 遍歷tokens,從右邊往左邊開始篩選,最快定位到目標元素合集 先看看有沒有搜尋器find,搜尋器就是瀏覽器一些原生的取dom介面,...

sizzle分析記錄 分解流程

js form div p name aaron 解析的流程 編譯器 分5個步驟 涉及 tag元素 關係選擇器 屬性選擇器 1 通過tokenize詞法分析器分組 2 遍歷tokens,從右邊往左邊開始篩選,最快定位到目標元素合集 先看看有沒有搜尋器find,搜尋器就是瀏覽器一些原生的取dom介面,...