題目地址:http://poj.org/problem?id=1007
剛開(kāi)始想到的這道題大概的思路是:用vector嵌套的map<int,string>來(lái)存儲(chǔ)輸入的每行DNA序列。由于STL中,map<key,value>結(jié)構(gòu)在插入時(shí),可以根據(jù)key的值升序插入每行數(shù)據(jù),因此考慮這種方法。初步寫出如下代碼:
其中,calculate()用于計(jì)算逆序數(shù),實(shí)現(xiàn)也很簡(jiǎn)單:
但是,測(cè)試幾組數(shù)據(jù)之后,發(fā)現(xiàn)經(jīng)常出現(xiàn)缺少DNA序列的情況,設(shè)置斷點(diǎn)調(diào)試之后發(fā)現(xiàn):原來(lái)是向map中插入數(shù)據(jù)時(shí),有些數(shù)據(jù)沒(méi)插進(jìn)去。
原來(lái)通過(guò)成員函數(shù)insert和STL的pair,向map<key,value>結(jié)構(gòu)插入逐條數(shù)據(jù)時(shí),當(dāng)key的值之前已經(jīng)出現(xiàn)過(guò)時(shí),插入不成功。需要使用multimap<key,value>進(jìn)行插入。
修改之后,提交成功。