POJ 1007 DNA Sorting
2015-02-21 12:51
513 查看
【题意】给定m个字符串,给个长度为n,按照逆序对从小到大排序输出
(0<n<=50,0<m<=100)
【分析】无,直接暴力,简单题就懒得标时间复杂度了,假如用O(n log n)的逆序对求法(归并排序 or 那几种树)也是可以的。
【代码】
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int N=80;
const int M=400;
struct S
{
char s
;
int cnt;
}q[M];
int n,m;
int cmp(S a,S b)
{
return a.cnt<b.cnt;
}
int main(void)
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%s",q[i].s);
for (int j=0;j<n-1;j++)
for (int k=j+1;k<n;k++) q[i].cnt+=q[i].s[j]>q[i].s[k];
}
sort(q+1,q+m+1,cmp);
for (int i=1;i<=m;i++) printf("%s\n",q[i].s);
return 0;
}
(0<n<=50,0<m<=100)
【分析】无,直接暴力,简单题就懒得标时间复杂度了,假如用O(n log n)的逆序对求法(归并排序 or 那几种树)也是可以的。
【代码】
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int N=80;
const int M=400;
struct S
{
char s
;
int cnt;
}q[M];
int n,m;
int cmp(S a,S b)
{
return a.cnt<b.cnt;
}
int main(void)
{
scanf("%d%d",&n,&m);
for (int i=1;i<=m;i++)
{
scanf("%s",q[i].s);
for (int j=0;j<n-1;j++)
for (int k=j+1;k<n;k++) q[i].cnt+=q[i].s[j]>q[i].s[k];
}
sort(q+1,q+m+1,cmp);
for (int i=1;i<=m;i++) printf("%s\n",q[i].s);
return 0;
}
相关文章推荐
- 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
- POJ 1007 DNA Sorting(简单排序)
- poj 1007 DNA Sorting 【水题】
- [POJ] 1007 -> DNA Sorting
- POJ 1007 DNA Sorting
- poj 1007 DNA Sorting 【对逆序数进行sort排序】
- zoj 1188 || poj 1007 DNA Sorting(水~)
- POJ 1007 - DNA Sorting
- POJ 1007 DNA Sorting
- STL 应用2 POJ 1007 DNA Sorting 题解 (STL完美解答)
- POJ 题目1007 DNA Sorting (水题 排序)
- POJ - 1007 DNA Sorting