POJ 1007 解题报告 DNA Sorting
2011-12-15 17:39
471 查看
#include <iostream> #include <string> #include <map> using namespace std; class DNA{ public: string strDNA; DNA(string); }; DNA::DNA(string s) { strDNA = s; } int calculateInversionsNum(const string&); bool operator<(const DNA&, const DNA&); int main () { string str; int iNum; int iLength; cin >> iLength >> iNum; map<DNA, int> mDna; while (iNum--) { cin >> str; DNA d = DNA(str); ++mDna[d]; } map<DNA, int>::iterator iterI = mDna.begin(); while(iterI != mDna.end()) { while (iterI->second --) { cout << iterI->first.strDNA << endl; } iterI ++; } return 0; } bool operator<(const DNA& dL, const DNA& dR) { if(calculateInversionsNum(dL.strDNA) < calculateInversionsNum(dR.strDNA)) { return true; } else { return false; } } int calculateInversionsNum(const string& str) { int i = 0; int iInversionsNum = 0; while (i < str.size() - 1) { int iCountRepeat = 1; while (str[i] == str[i + 1]) { iCountRepeat ++; i++; if (i == str.size() - 1) { return iInversionsNum; } } int j = i; int iAdd = 0; while (j < str.size()) { if (str[i] > str[j]) { iAdd ++; } j ++; } iInversionsNum += iCountRepeat * iAdd; i ++; } return iInversionsNum; }
相关文章推荐
- POJ_1007:DNA Sorting解题报告
- [POJ 1007] DNA Sorting C++解题
- POJ 1007 DNA Sorting——Output Limit Exceeded
- POJ 1007 DNA Sorting
- poj1007 -- DNA Sorting
- poj1007——DNA Sorting
- poj 1007:DNA Sorting(水题,字符串逆序数排序)
- POJ 1007 DNA Sorting(水题) 逆…
- POJ 1007 DNA Sorting 水题 结构体
- POJ 1007(无序度 排序) 解题报告
- poj 1007 DNA Sorting 解题报告
- 【原】 POJ 1094 Sorting It All Out 拓扑排序 解题报告
- POJ 1094 Sorting It All Out (拓扑排序) -- 解题报告
- POJ 1007(无序度 排序) 解题报告
- poj 1007 DNA Sorting 解题报告
- poj1007"DNA Sorting"解题报告
- POJ 1007 DNA Sorting [解题报告] Java
- poj 1007 (nyoj 160) DNA Sorting
- poj 1094 Sorting It All Out 解题报告
- poj 1007 DNA Sorting 解题报告