poj 1007DNA Sorting解題報告

2021-06-28 02:53:21 字數 953 閱讀 8393

默默的說真的是水題  

題目大意:

序列「未排序程度」的乙個計算方式是元素亂序的元素對個數。例如:在單詞序列「

daabec'

」中,因為d大於右邊四個單詞,e大於c,所以計算結果為5。這種計算方法稱為序列的逆序數。序列「

aacedgg

」逆序數為1(e與d)——近似排序,而序列

``zwqm'' 

逆序數為6(它是已排序序列的反序)。

你的任務是分類dna字串(只有acgt四個字元)。但是你分類它們的方法不是字典序,而是

逆序數,排序程度從好到差。所有字串長度相同。

輸入:

第一行包含兩個數:乙個正整數n(0

輸出:輸出輸入字串列表,按排序程度從好到差。如果逆序數相同,就原來順序輸出。 解題

:從後往前記錄大於該字元的值的個數

因為只有acgt所以不用開陣列的

只記錄acg的原因是沒有比t更大的了  不用記錄大於t的個數了

之後在結構體中記錄下字串(我是記錄的輸入順序) 自定義乙個<號即可sort排序

直接上**

#include

#include

#include

#include

using namespace std;

struct ss[110];

char q[110][60];

int ans,n,c,a,c,g;

bool operator <(s a,s b)

int main()

if(q[k][i]=='g')

if(q[k][i]=='c')

}s[k].cnt=ans;

s[k].nu=k;

}sort(s+1,s+n+1);

for(int i=n;i>=1;i--)

return 0;

}

POJ 1007題目解答

poj 1007題目解答 題目要求是對固定長度的字串進行排序,當然排序的前提是按照每個字串內部 使字元達到有序條件的時候需要的轉置交換次數按照從大到小對所有字串進行排序,暴力解法直接計算出每個字串需要進行的轉置次數。include include include using namespace st...

POJ 1007 求逆序對數)

求逆序對數,2關鍵字排序 program p1007 var n,m,i,j,k,l,p longint a array 1.200 of string s string b,num array 1.200 of longint function h s string longint var i,j...

poj1007 DNA Sorting解題報告

題目要求的是一條dna序列的逆序數,求逆序數可以考慮使用歸併演算法來進行求解。我們來設想這樣乙個場景 相鄰的a b兩塊進行公升序排序,各自都已經是排好序的了,且b排在a右邊。那麼當把b中的某數t放到已排序的數列中,那麼a序列中剩下的數就是比數t要大的,但我們要注意到 在原序列中,由於b序列在a序列右...