zoukankan      html  css  js  c++  java
  • POJ 1007 DNA Sorting

    按逆序数从小到大排序。需要稳定排序。然而依然可以快排

    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    
    const int N = 55;
    const int M  = 104;
    char str[M][N];
    struct point{
        int num, id;
    
    }p[M];
    int n, m;
    
    void GetInverse(int id){
        int i;
        int NumA = 0, NumC = 0, NumT = 0, NumG =0;
        p[id].num = 0;  p[id].id = id;
    
        for (i = 0; i < m; i++){
            if(str[id][i] == 'A'){
                p[id].num += NumC;
                p[id].num += NumT;
                p[id].num += NumG;
                NumA ++;
            }
            else if(str[id][i] == 'C'){
                p[id].num += NumT;
                p[id].num += NumG;
                NumC ++;
            }
            else if(str[id][i] == 'G'){
                p[id].num += NumT;
                NumG ++;
            }else NumT ++;
        }
    }
    
    bool cmp(point a, point b){
        if(a.num == b.num)  return a.id < b.id;
        else return a.num < b.num;
    }
    int main(){
        int i, j;
        while(scanf("%d%d",&m, &n) != EOF){
            for(i = 1; i <= n; i++){
                scanf("%s", str[i]);
                GetInverse(i);
            }
            sort(p + 1, p + n + 1, cmp);
            for(i = 1; i <= n; i++){
                puts(str[p[i].id]);
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    关于checkbox的一篇博客
    如何快速学习
    for循环下的取值问题
    vue的自动更新原理
    关于word-wrap的用法;
    2016年百度面试题
    编写代码的原则
    null和defined的区别
    js的模块化加载
    springmvc注解
  • 原文地址:https://www.cnblogs.com/bbbbbq/p/4628689.html
Copyright © 2011-2022 走看看