求字符数组逆序数(poj1007)

int InversionNumber(char* s,int len)  

  • {  
  •     int ans=0;  //s逆序数  
  •     int A,C,G;  //各个字母出现次数,T是最大的,无需计算T出现次数  
  •     A=C=G=0;  
  •     for(int i=len-1;i>=0;i--)  
  •     {  
  •         switch(s[i])  
  •         {  
  •             case 'A':A++;break;  //A是最小的,无逆序数  
  •             case 'C':  
  •                  {  
  •                      C++;  
  •                      ans+=A;  //当前C后面出现A的次数就是这个C的逆序数  
  •                      break;  
  •                  }  
  •             case 'G':  
  •                 {  
  •                     G++;  
  •                     ans+=A;  
  •                     ans+=C;  
  •                     break;  
  •                 }  
  •             case 'T':  
  •                 {  
  •                     ans+=A;  
  •                     ans+=C;  
  •                     ans+=G;  
  •                     break;  
  •                 }  
  •         }  
  •     }  
  •     return ans;  
  • }  
原文地址:https://www.cnblogs.com/earendil/p/4295650.html