通用版2.J - 归并排序求逆序对

xiaoxiao2021-02-28  35

#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; struct node { int num; char c[60]; }s[110]; bool cmp(node a,node b) { if(a.num<b.num)return true; return false; } int main() { int n,m,i,j,k,len; scanf("%d%d",&n,&m); for(i=0;i<=m-1;i++){ getchar(); scanf("%s",s[i].c); len=strlen(s[i].c); s[i].num=0; for(j=0;j<len-1;j++){ for(k=j+1;k<=len-1;k++){ if((s[i].c[j])>(s[i].c[k])) s[i].num++; } } } sort(s,s+m,cmp); for(i=0;i<=m-1;i++)puts((s[i].c)); return 0; }

大意是比如DAABEC的逆序数是5,因为D比右边四个数大,E比C大

按逆序数由小到大排序,

转载请注明原文地址: https://www.6miu.com/read-2628572.html

最新回复(0)