35. 理想大學
已知有多間學校,且每間學校都會有自己特殊的屬性,學生們希望可以透過輸入自己想要的屬性,來篩選自己想要的學校,請寫一個程式來幫助學生們解決這個問題。
每一大學可以擁有的 8 種屬性:
GF(Good Food) :代表附近有美食。
BC(Big Campus):代表有大校園。
NC(Next to City):代表鄰近有大城市。
CT(Convenient Transportation):代表交通方便。
NS(Next to Sea):代表靠海。
NM(Next to Mountain):代表依山。
HL(Has Lake):代表校園有湖。
NL(Near Landscape):代表附近有風景區。
【輸入說明】
第一行:輸入整數N (3 <= N <= 5),代表總共有N間學校
第二~N+1行:每行輸入學校名稱以及該學校擁有的屬性,學校名稱、每個屬性
間以一個空白隔開。
第N+2行:輸入整數M (1 <= M <= 4),代表有幾組想要的屬性
第N+3~N+M+3行:每一行有一組查詢。查詢條件為校園屬性組成,每個校園屬
性為 2 個字元。用 + 號區格的條件代表"或" 的關係,沒有 +
區隔的條件代表 "且" 的關係。
屬性間及 + 之間有 1 個空白間隔。例如: BC NS + CT HL 代
表需找出【大校園且靠海】,或【交通方便且校園有湖】的
所有大學名稱。
其格式如下:
XX YY + AA BB
意思為屬性條件為: XX 且 YY,或是 AA 且 BB。
第N+M+4行:輸入整數b (0 <= b <= 1),決定輸出的方式
範例輸入說明:
3 (總共有5間學校)
NSYSU NC CT NS NM (學校名稱為NSYSU,擁有的屬性為NC、CT、NS、NM)
NTU BC NC CT NS (學校名稱為NTU,擁有的屬性為BC、NC、CT、NS)
NCCU BC NL HL (學校名稱為NCCU,擁有的屬性為BC、NL、HL)
2 (總共有2組查詢)
BC NS + CT HL (有大校園且靠海 或 交通方便且校園有湖)
BC + NS (有大校園 或 靠海)
0 (輸出以當b=0時候的方式輸出)
【輸出說明】
根據每一組的查詢數性條件,各自輸出符合的大學名稱
輸出格式:
當b=0時,代表輸出能符合條件的大學。例如:條件 NS BC NC + CT HL,大學名稱及屬性為NTUT NC BC NS ,則 NTUT 符合條件。假如大學名稱及屬性為NTU CT,則NTU不符合條件,此外如果有多間學校符合,則依學校輸入順序輸出,中間以空白隔開。
當b=1時,代表輸出部分符合且符合最多條件的大學(不需要整組屬性相同,即學生們要求的條件可以拆開來看)。例如:條件 NS BC NC + CT HL,大學名稱及屬性為 NTUT BC NS(符合兩種屬性)、 NTUST BC(符合一種屬性),則輸出NTUT。此外如果符合度最高的學校同時有2間以上,則依學校輸入順序輸出,中間以空白隔開。
範例輸出說明 :
NTU (符合第一組查詢條件的BC NS,符合有大校園且靠海的屬性條件)
NSYSU NTU NCCU (NSYSU符合第二組查詢條件的NS(靠海),NTU符合第二組
查詢條件的BC(有大校園),NCCU符合第二組查詢條件的
BC(有大校園))
【特殊要求】
請使用 dictionary 儲存資料並完成此題目
【測試資料一】
輸入:
5
NSYSU NC CT NS NM
NTU BC NC CT NS
NCCU BC NL HL
Providence BC NC
NTHU BC NS
2
BC NS + CT HL
NM + BC NL + BC NC
0
輸出:
NTU NTHU
NSYSU NTU NCCU Providence
【測試資料二】
輸入:
3
NTHU GF HL
NCTU NM GF BC
NCKU CT GF NS
3
HL + BC NL + CT BC
NM HL + CT + GF NS
NM
0
輸出:
NTHU
NCKU
NCTU
【測試資料三】
輸入:
4
NCU CT NM
NUU BC GF NL NM CT
NTOU GF NL NM
NTNU HL NC
2
BC
HL BC + NS GF + NL + NM
1
輸出:
NUU
NUU
【測試資料四】
輸入:
3
NTUE CT NM HL NC
NHCUE NS
NTCU NS NC
3
NS + BC HL
CT
BC GF NC NS NL
1
輸出:
NTUE NHCUE NTCU
NTUE
NTCU
【隱藏測試資料一】
輸入:
3
NCUE GF NL NM
NSYSU NS
NCCU CT BC NM HL NC
2
HL NL + CT BC + NM GF
NL + NL CT HL
0
輸出:
NCUE NCCU
NCUE
【隱藏測試資料二】
輸入:
4
CCU CT NS GF
NCNU NS
NTPU NL HL NM BC
NUK BC NC NL HL
3
NS + CT HL
HL
GF NS + NL HL + NM
0
輸出:
CCU NCNU
NTPU NUK
CCU NTPU NUK
【隱藏測試資料三】
輸入:
5
NQU CT GF HL NL NM
NTUA HL NL
TNUA CT NM NL GF NC
TNNUA BC NL GF
PCCU NL NM
2
GF NM CT
GF NS + NL
1
輸出:
NQU TNUA
NQU TNUA TNNUA
【隱藏測試資料四】
輸入:
3
FJU NL HL GF NM BC CT
SCU NM NC CT NS
USC NS GF NL BC
4
NC
NM NL CT BC HL NS
NS GF
NC GF BC
1
輸出:
SCU
FJU
USC
FJU USC