zoukankan      html  css  js  c++  java
  • ZOJ 1188 DNA Sorting

    原题链接

    题目大意:给定一串字符串,查找字符串里字母逆序排列的对数,按照由少到多的顺序把所有字符串进行排列。

    解法:用C++字符串string类的iterator,从每个字符串的起始开始,查找逆序字符的个数,然后用qsort方法按照reverseCount的大小快速排序。

    参考代码:

    #include<iostream>
    #include<string>
    #include<string.h>
    #include<cstdlib>
    #include<cstdio>
    
    using namespace std;
    
    struct DNAStr{
    	int index,reverseCount;
    	string str;
    }DNA[102];
    
    int countReverse(string s){
    	int num = 0;  
        string::iterator lit = s.begin();  
        string::iterator rit;  
        for(; lit < s.end(); lit++)  
            for(rit = lit + 1; rit <s.end(); rit++)  
            {  
                if(*lit > *rit)  
                {  
                    num++;  
                }  
            }  
        return num;  
    }
    int cmp(const void *a, const void *b){
    	DNAStr * x = (DNAStr *)a;
    	DNAStr * y = (DNAStr *)b;
    	
    	return (DNAStr *)x->reverseCount > (DNAStr *)y->reverseCount;
    }
    
    int main(){
    	int cas,m,n;
    	
    
    	cin>>cas;
    	while(cas--){
    		getchar();
    		cin>>n>>m;
    		getchar();
    		for(int i=0;i<m;i++){
    			getline(cin,DNA[i].str);
    			DNA[i].index=i;
    		}
    		
    		for(int i=0;i<m;i++)
    			DNA[i].reverseCount = countReverse(DNA[i].str);
    		qsort(DNA,m,sizeof(DNAStr),cmp);
    
    		for(int i=0;i<m;i++){
    			cout<<DNA[i].str<<endl;
    		}
    		if(cas)
    			cout<<endl;
    		
    	}
    
    
    	return 0;
    }
  • 相关阅读:
    JAVA设计模式---总述篇
    Java中对象创建时的内存分配
    for循环打印空心菱形的新方法
    springcloud2.X通过actuator加载配置无效问题
    golang-错误处理
    golang-字符串
    golang-方法和接口
    golang-结构体与指针
    golang-数组、切片、映射
    golang-流程控制
  • 原文地址:https://www.cnblogs.com/naive/p/3568802.html
Copyright © 2011-2022 走看看