poj 1007 DNA Sorting 解题报告
2015-09-20 21:20
253 查看
题意:
输入是第一行两个数字,表示每行的长度和总行数
然后是n行字符串
求出每行字符串的逆序数,按逆序数从小到大的顺序排列所有的字符串。。
什么是逆序数呢,在一个排列中,如果前面的数比后面的大就称为逆序.一个排列中的逆序总数称为逆序数。。
例如:给出32145求出它的逆序数,从它的第二个数开始,和它前面的数比较大小,如果是从小到大的顺数,则逆序数为0,如果前面有几个比它大的逆序数就是几。。。
方法:
对于每个字符串求出逆序数,然后根据逆序数对字符串排序输出。
输入是第一行两个数字,表示每行的长度和总行数
然后是n行字符串
求出每行字符串的逆序数,按逆序数从小到大的顺序排列所有的字符串。。
什么是逆序数呢,在一个排列中,如果前面的数比后面的大就称为逆序.一个排列中的逆序总数称为逆序数。。
例如:给出32145求出它的逆序数,从它的第二个数开始,和它前面的数比较大小,如果是从小到大的顺数,则逆序数为0,如果前面有几个比它大的逆序数就是几。。。
方法:
对于每个字符串求出逆序数,然后根据逆序数对字符串排序输出。
#include <iostream> #include <string> #include <algorithm> #include <cstdio> using namespace std; typedef struct { string str; int num; }DNA; DNA d[100]; bool cmp(DNA a,DNA b) { return a.num<b.num; } int main(void) { int m,n; cin>>m>>n; int i=0; for(;i<n;i++) { cin>>d[i].str; d[i].num=0; for(int k=1;k<m;k++) { for(int j=0;j<k;j++) { if(d[i].str[k]<d[i].str[j]) d[i].num++; } } } stable_sort(d,d+n,cmp); for(i=0;i<n;i++) { cout<<d[i].str<<endl; } return 0; }
相关文章推荐
- poj 1005 I Think I Need a Houseboat 解题报告
- poj 1004 Financial Management 解题报告
- poj 1003 Hangover 解题报告
- 标准C++的一些约定
- 软件测试的知识总结2(周末版)
- Oracle 11g EM删除重建的方法
- 数字找规律,臭题一箩筐
- 今日学习总结9.20
- hdoj 2524 矩形 A+B
- oj系统上写代码的一些小技巧
- 移位乘除法
- poj 1182 食物链(并查集)解题报告(转)
- 阶乘因式分解:求阶乘后某因子个数
- 一个刚踏入算法之路的小生
- [hibernate] - hibernate modules
- bzoj-2083 Intelligence test
- 二分查找之再思考
- 使用java编写的冒泡排序小程序
- 【转】关于 float、position学习心得
- 印象笔记面临倒闭 估值10亿的公司如何走向衰亡