POJ 1007 DNA Sorting
2014-07-21 11:30
204 查看
POJ 1007 DNA Sorting 题目链接:http://poj.org/problem?id=1007
题目大意:给出一些DNA字符串(仅含AGCT),由逆序数给出排序程度定义(逆序数越大排序程度越低),要求按排序程度递减输出这些DNA串。
题目分析:知道逆序数的知识后还是很容易的…
code:
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
char c[60];
int v;
}a[120];
int cmp(node a,node b)
{
return a.v<b.v;
}
int main()
{
int i,j,m,n,t,gt,cgt;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%s",a[i].c);
t=gt=cgt=0;
for(j=1;j<n;j++)
{
switch(a[i].c[j-1])
{
case'T':t++;
case'G':gt++;
case'C':cgt++;
}
switch(a[i].c[j])
{
case'A':a[i].v+=cgt;break;
case'C':a[i].v+=gt;break;
case'G':a[i].v+=t;
}
}
}
sort(a,a+m,cmp);
for(i=0;i<m;i++)
{
printf("%s\n",a[i].c);
}
return 0;
}
PS:正式开工第一天,逆序数的知识还是比较重要的…
题目大意:给出一些DNA字符串(仅含AGCT),由逆序数给出排序程度定义(逆序数越大排序程度越低),要求按排序程度递减输出这些DNA串。
题目分析:知道逆序数的知识后还是很容易的…
code:
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
char c[60];
int v;
}a[120];
int cmp(node a,node b)
{
return a.v<b.v;
}
int main()
{
int i,j,m,n,t,gt,cgt;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++)
{
scanf("%s",a[i].c);
t=gt=cgt=0;
for(j=1;j<n;j++)
{
switch(a[i].c[j-1])
{
case'T':t++;
case'G':gt++;
case'C':cgt++;
}
switch(a[i].c[j])
{
case'A':a[i].v+=cgt;break;
case'C':a[i].v+=gt;break;
case'G':a[i].v+=t;
}
}
}
sort(a,a+m,cmp);
for(i=0;i<m;i++)
{
printf("%s\n",a[i].c);
}
return 0;
}
PS:正式开工第一天,逆序数的知识还是比较重要的…
相关文章推荐
- 用单调栈解决最大连续矩形面积问题
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- 【高手回避】poj3268,一道很水的dijkstra算法题
- poj 2485 Highways
- poj 1511 Invitation Cards
- poj1042
- poj1080
- poj1088
- 西工大 poj sticks
- 西工大 POJ Sum of Consecutive Prime Numbers
- POJ#1001
- POJ#1002
- poj1063 Flip and Shift
- poj 3249 Test for Job 最长路
- POJ 1002 用map容器写的,自己运行对了,提交确实 wrong answer,怎么回事
- 状态压缩DP poj 2817 WordStack 入门题
- POJ 2406 Power Strings
- POJ 2352 Stars
- POJ 3264 Balanced Lineup