请根据排序算法写出以下题目的c++代码:现在有一些长度相等的 DNA 串只由 ACGT 四个字母组成请将它们按照逆序对的数量多少排序。逆序对指的是字符串A中的两个字符 Ai、Aj具有 i j 且 Ai Aj 的性质。如字符串 ATCG 中T 和 C 是一个逆序对T 和 G 是另一个逆序对这个字符串的逆序对数为 22。输入格式第 11 行:两个整数 nn 和 mmn0n le 50n0n≤50
#include
// 求逆序对数 int getReversePairs(string& s) { int n = s.size(); int cnt = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (s[i] > s[j]) { cnt++; } } } return cnt; }
// 自定义比较函数,按逆序对数从小到大排序 bool cmp(string& s1, string& s2) { int cnt1 = getReversePairs(s1); int cnt2 = getReversePairs(s2); if (cnt1 != cnt2) { return cnt1 < cnt2; } else { return s1 < s2; } }
int main() {
int n, m;
cin >> n >> m;
vector
原文地址: https://www.cveoy.top/t/topic/fjso 著作权归作者所有。请勿转载和采集!