ACM程序设计书中题目--E(DNA sorting)
2017-03-19 19:29
225 查看
题意简述:按照特定的顺序:即最有序到最无序排列DNA。字母比其后多少个字母大,指标即为多少。
解题思路:
1、首先将DNA序列输入,因为有多组数据,多行DNA序列,所以定义结构体实现。
2、结构体的定义:包含一个存放字符串的字符数组,一个整数b用于存放该字符串的指标。
3、输入两个数即字符串长度与个数。
4、利用循环得到指标的个数。
5、对每个DNA序列的指标大小进行比较,最有序的先输出,即指标小的先输出。
(此处用的循环挨个找的方法,想想也可以用sort函数直接对结构体进行排序。将结构体存于vector<DNA>w中,然后用sort定义一个函数,按照指标的大小进行排序。)
解题感想:
用循环可以解决问题,但是用STL更容易解决,代码更短也更省时,还需要对STL进行更多的练习。
源代码:
解题思路:
1、首先将DNA序列输入,因为有多组数据,多行DNA序列,所以定义结构体实现。
2、结构体的定义:包含一个存放字符串的字符数组,一个整数b用于存放该字符串的指标。
3、输入两个数即字符串长度与个数。
4、利用循环得到指标的个数。
5、对每个DNA序列的指标大小进行比较,最有序的先输出,即指标小的先输出。
(此处用的循环挨个找的方法,想想也可以用sort函数直接对结构体进行排序。将结构体存于vector<DNA>w中,然后用sort定义一个函数,按照指标的大小进行排序。)
解题感想:
用循环可以解决问题,但是用STL更容易解决,代码更短也更省时,还需要对STL进行更多的练习。
源代码:
#include <bits/stdc++.h> using namespace std; int main() { struct DNA { char a[50]; int b; }c[100],d; int n,i; cin>>n; for (i=0;i<n;i++) { int o,j,t,r,x,max; cin>>o>>j; for (t=0;t<j;t++) cin>>c[t].a; if (i!=0) cout<<endl; for (t=0;t<j;t++) { c[t].b=0; for (r=0;r<o;r++) for (x=r;x<o;x++) if (c[t].a[r]>c[t].a[x]) c[t].b++; } for (t=0;t<j;t++) for (r=t;r<j;r++) if (c[t].b>c[r].b) { max=r; r=t; t=max; } for (t=0;t<j;t++) for (r=t;r<j;r++) if (c[t].b>c[r].b) { d=c[t]; c[t]=c[r]; c[r]=d; } for (t=0;t<j;t++) { cout<<c[t].a<<endl; } } return 0; }
相关文章推荐
- ACM程序设计书中题目O
- ACM程序设计 书中题目O(map统计字符串出现的次数)
- ACM程序设计 书中题目T
- ACM程序设计书中的题目练习后感
- 关于acm程序设计书中题目 #H 第8题
- ACM程序设计 书中题目Y
- ACM程序设计书中题目--N(数字反转)
- ACM程序设计 书中题目L
- acm程序设计书中题目第s题解析
- ACM程序设计 书中题目N(翻转数字)
- ACM程序设计 书中题目U(美丽的数字)
- ACM程序设计 书中题目Z
- ACM程序设计书中题目--B(字典问题)
- ACM程序设计书中题目V
- ACM程序设计书中题目--L(字符逆序输出)
- ACM程序设计书中题目--P(粮食问题)
- ACM程序设计书中题目--U(寻找第n个能被3或5整除的数)
- ACM程序设计书中题目M
- acm程序设计书中题目第e题解析
- ACM程序设计书中题目--T(次方问题)