C++之OPJ-2
来源:互联网 发布:爱情守望者 mac 编辑:程序博客网 时间:2024/05/16 12:04
1007:DNA排序
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
- 现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序。逆序对指的是字符串A中的两个字符A[i]、A[j],具有i < j 且 A[i] > A[j] 的性质。如字符串”ATCG“中,T和C是一个逆序对,T和G是另一个逆序对,这个字符串的逆序对数为2。
- 输入
- 第1行:两个整数n和m,n(0<n<=50)表示字符串长度,m(0<m<=100)表示字符串数量
第2至m+1行:每行是一个长度为n的字符串 - 输出
- 按逆序对数从少到多输出字符串,逆序对数一样多的字符串按照输入的顺序输出。
- 样例输入
10 6AACATGAAGGTTTTGGCCAATTTGGCCAAAGATCAGATTTCCCGGGGGGAATCGATGCAT
- 样例输出
CCCGGGGGGAAACATGAAGGGATCAGATTTATCGATGCATTTTTGGCCAATTTGGCCAAA
由于刚刚写C++,自己用了三个小时写的代码还是有很多问题,而且过于“臃肿”, 还是转载一篇大神的代码吧···
#include<iostream>#include<cstdio> #include<cstring> #include<algorithm> #include<assert.h> #include<ctype.h> #include<cstdlib> #define MAX 10000using namespace std;struct tn{ char s[54]; int asc;}d[105];bool compare(tn a, tn b){ return a.asc < b.asc;}int main(){ int i, j, k, n, m; cin >> n >> m; for (i = 0; i < m; i++) { cin >> d[i].s; } for (i = 0; i < m; i++) { d[i].asc = 0; for (j = 0; j < n; j++) { for (k = j; k < n; k++) { if (d[i].s[k] < d[i].s[j]) d[i].asc++; } } sort(d, d + m, compare); for (i = 0; i < m; i++) { cout << d[i].s << endl; } } return 0;}
0 0
- C++之OPJ-2
- C++之OPJ-1
- C++之OPJ-3
- C++之OPJ-4
- C++之OPJ-5
- opj 多项式加法
- opj 7221 拯救公主
- OPJ---7830:求小数的某一位
- opj线性表Placing apples 题解
- OPJ-1067 取石子游戏 解题报告(数论) 取石子游戏,betty定理
- OPJ-3349 SnowflakeSnowSnowflakes 解题报告(hash) 两片相同的雪花
- c语言之题2
- C++STL之迭代器2
- c语言之基础-2
- c高级之指针2
- C语言之指针(2)
- C之行(2):C primer plus的第八题
- C程序设计语言练习题之 2-2
- Windows服务编写
- 程序员的进步从阅读自己的老代码开始
- 邹足纵谞捉着椎佐注赚醉左总滓综滋缀做
- 实验二.1
- eclipse导入工程后无法加入tomcat
- C++之OPJ-2
- A connection attempt failed because the connected party did not (trying to connect via tcp://localho
- ORCL 系统相关
- 收集的yum命令博文
- 钻总钻装祖资棕浊琢醉椎滋钻佐佐组卒综
- 柞追追醉左专奏昨族嘴尊桌阻阻坐茁专庄
- Java 字符串截取
- EPM Hyperion 11.1.2 产品说明及系统架构
- Live Archive 6657