POJ 1007 DNA Sorting
2015-03-02 22:31
357 查看
字母序列的逆序数:对序列里的每一个字符,按照字典序的顺序,当前字母后面比它小的字母个数为该字母的逆序数,所有字母的逆序只和为字母序列的逆序数。
给出若干段等长的DNA序列,把给出的DNA序列按照逆序数由小到大的顺序排列输出,如果两段序列的逆序数相同则按输入时的顺序输出。
Code:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100 + 10;
const int maxstr = 50 + 5;
struct dnastr
{
char str[maxstr];
int deg;
};
dnastr st[maxn];
int cmp( dnastr a, dnastr b )
{
return a.deg < b.deg;
}
int main()
{
int len, n;
scanf( "%d%d", &len, &n );
for( int i = 0; i < n; i++ )
{
int degtmp = 0;
scanf( "%s", st[i].str );
for( int j = 0; j < len; j++ )
{
for( int k = j + 1; k < len; k++ )
{
if( st[i].str[k] < st[i].str[j] )
degtmp++;
}
}
st[i].deg = degtmp;
}
sort( st, st + n, cmp );
for( int i = 0; i < n; i++ )
printf( "%s\n", st[i].str );
return 0;
}
给出若干段等长的DNA序列,把给出的DNA序列按照逆序数由小到大的顺序排列输出,如果两段序列的逆序数相同则按输入时的顺序输出。
Code:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100 + 10;
const int maxstr = 50 + 5;
struct dnastr
{
char str[maxstr];
int deg;
};
dnastr st[maxn];
int cmp( dnastr a, dnastr b )
{
return a.deg < b.deg;
}
int main()
{
int len, n;
scanf( "%d%d", &len, &n );
for( int i = 0; i < n; i++ )
{
int degtmp = 0;
scanf( "%s", st[i].str );
for( int j = 0; j < len; j++ )
{
for( int k = j + 1; k < len; k++ )
{
if( st[i].str[k] < st[i].str[j] )
degtmp++;
}
}
st[i].deg = degtmp;
}
sort( st, st + n, cmp );
for( int i = 0; i < n; i++ )
printf( "%s\n", st[i].str );
return 0;
}
相关文章推荐
- [滴水石穿]poj 1007-DNA Sorting 结题报告【1】
- POJ 1007 DNA Sorting
- poj 1007 DNA Sorting(排序--快排)
- poj 1007 DNA Sorting
- poj 1007 DNA Sorting
- POJ 1007 - DNA Sorting
- POJ 一 1007 DNA Sorting
- POJ 1007 DNA Sorting
- (使用排序算法进行编程7.3.11)POJ 1007 DNA Sorting(使用冒泡排序算法来计算逆序对)
- POJ 1007 DNA Sorting
- STL 应用2 POJ 1007 DNA Sorting 题解 (STL完美解答)
- POJ 1007 DNA Sorting
- POJ 1007_DNA Sorting
- poj 1007 DNA Sorting
- poj1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ 1007 DNA Sorting
- POJ 1007.DNA Sorting
- POJ 1007 DNA Sorting