POJ 1007DNA Sorting解题报告——【PKU ACM】
2011-05-13 18:51
363 查看
这道题目的关键在于将逆序数目和数据结合在一起。
这里我提供两个方法。
方法一:将数据和逆序数目整合一起,要学会qsort函数的使用
方法二:巧妙的将逆序数目与int型数组结合
//非常绝妙的绑定方法
这里我提供两个方法。
方法一:将数据和逆序数目整合一起,要学会qsort函数的使用
#include<iostream> #include<string> #include <cstdlib> using namespace std; class DNA{ public: string seqDNA; int num; }; int compare(const void *p1, const void *p2){ return(((DNA*)p1)->num-((DNA*)p2)->num); } int main(){ DNA *dna; int n,m,num,count(0); string listDNA; cin>>m>>n; dna=new DNA ; while(count<n){ cin>>listDNA; num=0; for(int i=0;i<m-1;++i){ //寻找逆序数目 for(int j=i+1;j<m;++j){ if(listDNA.at(i)>listDNA.at(j)) ++num; } } dna[count].num=num; dna[count++].seqDNA=listDNA; } qsort(dna,n,sizeof(DNA),compare); //根据逆序数目进行快速排序 for(int i=0;i<n;++i) cout<<dna[i].seqDNA<<endl; delete []dna; return 0; }
方法二:巧妙的将逆序数目与int型数组结合
//非常绝妙的绑定方法
#include<iostream> #include<string> #include<cstdlib> using namespace std; int compare(const void *p1, const void *p2){ return(*(int*)p1-*(int*)p2); } int main(){ string listDNA; int m,n,num; cin>>m>>n; string *seqDNA=new string ; int *countDNA=new int ; for(int k=0;k<n;++k){ cin>>listDNA; num=0; for(int i=0;i<m-1;++i) for(int j=i+1;j<m;++j) if(listDNA.at(i)>listDNA.at(j)) ++num; *(seqDNA+k)=listDNA; *(countDNA+k)=num*1000+k; } qsort(countDNA,n,sizeof(int),compare); for(int i=0;i<n;++i) cout<<seqDNA[countDNA[i]%1000]<<endl; delete []seqDNA; delete []countDNA; return 0; }
相关文章推荐
- POJ 1001Exponentiation解题报告——求高精度幂——【PKU ACM】
- POJ 1002求487-3279解题报告——【PKU ACM】
- ACM PKU POJ 1740 解题报告 -- 男人八题之四
- POJ 1003求Hangover解题报告——【PKU ACM】
- 单调队列 - 兼 ACM PKU POJ 3250 及 2823 解题报告
- POJ 1004Financial Management解题报告——【PKU ACM】
- POJ 1005I Think I Need a Houseboat解题报告——【PKU ACM】
- POJ 1006Biorhythms解题报告——生理周期——【PKU ACM】
- ACM PKU POJ 1112 解题报告
- 单调队列 - 兼 ACM PKU POJ 3250 及 2823 解题报告 [转]
- 有向图的汇点 -- 兼 ACM PKU POJ 2186 ( Popular Cows ) 解题报告
- 整数分解和划分 - 兼 ACM PKU POJ 1221 解题报告
- Pku acm 3041 Asteroids 数据结构题目解题报告(十六)---- 匈牙利算法求二分图的最大匹配
- Pku acm 1458 Common Subsequence 动态规划题目解题报告(五)
- Pku acm 3253 Fence Repair 数据结构题目解题报告(一) ----哈夫曼数
- Pku acm 2299 Ultra-QuickSort 排序算法解题报告(四)----归并排序(MegerSort)求逆序数
- Pku acm 2159 Ancient Cipher 排序算法解题报告(六)----计数排序
- Pku acm 2250 Compromise 动态规划题目解题报告(六)
- Pku acm 1007 DNA Sorting 排序算法解题报告(五)----求逆序数 排序
- Pku acm 1423 Big Number 解题报告----求n!的位数