日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

1007:DNA排序

發布時間:2024/5/8 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1007:DNA排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
樣例輸出
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
這道題就是按照逆序對數從小到大的順序,輸出對應的字符串。。。
關鍵在于標記完哪個字符串對應的逆序對數,再將這個數從小到大排序,再按照這個逆序對數目的從小到大輸出對應的字符串。。。
下面對于該題,c語言以及Python進行解答:
c語言:

#include <stdlib.h> #include <stdio.h> #include <algorithm> #include <iostream> #include <string.h> #include <math.h> using namespace std; char a[105][55]; char b[105][55]; int num[105]; int book[2500]; int main() {int n,m,i,j,k,count,pos;scanf("%d%d",&n,&m);for(i=0; i<m; i++)cin>>a[i];for(i=0; i<m; i++){//num[i]=0;for(j=0; j<n; j++){for(k=j+1;k<n;k++){if(a[i][j]>a[i][k])num[i]++;}}count=num[i];book[count]=i;}sort(num,num+m);//printf("\n");for(i=0;i<m;i++){count=num[i];pos=book[count];//printf("%s\n",a[pos]);cout<<a[pos]<<endl;}return 0; }

Python語言:

n,m=map(int,input().split()) a=[] num=[] book=[] for i in range(2500):book.append(0) for i in range(m):a.append(input()) for i in range(m):num.append(0)for j in range(n):for k in range(j+1,n):if a[i][j]>a[i][k]:num[i]+=1count=num[i]book[count]=i #對num數組排序(從小到大) num.sort() for i in range(m):count=num[i]pos=book[count]print(a[pos])

總結

以上是生活随笔為你收集整理的1007:DNA排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。