您的位置:首页 > 其它

poj1007 DNA sorting

2014-01-03 23:16 381 查看
这题目比较简单,看题干就能看出来。求逆序数,我用的是O(n^2)的算法,数据也不大,水过。

也可以用归并排序来做。

#include <stdio.h>
#include <algorithm>
#include <string.h>
struct node{
char str[100];
int cnt;
int num;
}str[110];
bool cmp(node a,node b){
if(a.cnt==b.cnt) return a.num<b.num;
return a.cnt<b.cnt;
}
int main(){
int i,j,cnt;
int cas;
int n,m;
while(~scanf("%d%d",&n,&m)){
for(cas=0;cas<m;++cas){
scanf("%s",str[cas].str);
str[cas].cnt=0;
str[cas].num=cas;
for(i=0;i<n;++i){
for(j=i+1;j<n;++j){
if(str[cas].str[i]>str[cas].str[j])
str[cas].cnt++;
}
}
}
std::sort(str,str+m,cmp);
for(cas=0;cas<m;++cas){
printf("%s\n",str[cas].str);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: