POJ1007 DNA Sorting (求逆序数)
2013-07-05 12:19
375 查看
【题目】:DNA Sorting
【来源】:点击打开链接
【解法】:
(1)我的做法(朴素做法效率低O(n2)):这题我做的比较直接,对每个字符串两层循环挨个扫描计算出其总的unsortness的总值,然后快排后顺序输出
(2)参考做法一(O(n)):
(3)还有n种做法:线段树,树状数组,归并排序
【来源】:点击打开链接
【解法】:
(1)我的做法(朴素做法效率低O(n2)):这题我做的比较直接,对每个字符串两层循环挨个扫描计算出其总的unsortness的总值,然后快排后顺序输出
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef struct Sn { char s[101]; int num; }SN; SN data[51]; bool cmp(SN a,SN b) { return a.num < b.num; } int main(){ //freopen("input.txt","r",stdin); int len,n,i,j,k; while(~scanf("%d %d",&len,&n)) { for(i=0;i<n;i++) { scanf("%s",data[i].s); data[i].num=0; } for(i=0;i<n;i++) { for(j=0;j<len;j++) { for(k=j+1;k<len;k++) if(data[i].s[k]<data[i].s[j]) data[i].num++; } } sort(data,data+n,cmp); for(i=0;i<n;i++) printf("%s\n",data[i].s); } return 0; }
(2)参考做法一(O(n)):
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef struct Sn { char s[101]; int num; }SN; SN data[51]; bool cmp(SN a,SN b) { return a.num < b.num; } int main(){ //freopen("input.txt","r",stdin); int len,n,i,j,k,p[4]; while(~scanf("%d %d",&len,&n)) { for(i=0;i<n;i++) { scanf("%s",data[i].s); data[i].num=0; } for(i=0;i<n;i++) { int cnt=0; memset(p,0,sizeof(p)); for(j=len-1;j>=0;j--) { switch(data[i].s[j]) { case 'A':p[0]++;break; case 'C':p[1]++;cnt+=p[0];break; case 'G':p[2]++;cnt+=(p[0]+p[1]);break; case 'T':p[3]++;cnt+=(p[0]+p[1]+p[2]);break; } } data[i].num=cnt; //printf("%s %d\n",data[i].s,data[i].num); } //qsort(data,n,sizeof(data[0]),cmp); sort(data,data+n,cmp); for(i=0;i<n;i++) printf("%s\n",data[i].s); } return 0; }
(3)还有n种做法:线段树,树状数组,归并排序
相关文章推荐
- poj1007 DNA Sorting(求逆序数)
- POJ1007 DNA Sorting(求逆序数)
- POJ1007 DNA Sorting 排序 C语言
- POJ1007:DNA Sorting
- HDU 1379 DNA sorting(求逆序数)
- 1007 DNA Sorting(字符串+逆序数)
- 【poj1007】DNA Sorting
- POJ1007-DNA Sorting
- POJ1007 DNA Sorting
- POJ1007-DNA Sorting
- POJ1007(DNA Sorting)
- poj 1007 DNA Sorting (求逆序数)
- POJ1007 DNA Sorting
- poj1007-DNA Sorting(排序)
- POJ1007 DNA Sorting
- POJ1007-DNA Sorting-ACM
- POJ1007 DNA Sorting
- POJ1007 DNA Sorting
- poj1007 DNA Sorting
- POJ1007 DNA Sorting