最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【ROSALIND】【練Python,學(xué)生信】19 枚舉基因排列順序

2019-02-15 15:08 作者:未琢  | 我要投稿

如果第一次閱讀本系列文檔請先移步閱讀【ROSALIND】【練Python,學(xué)生信】00 寫在前面 ?謝謝配合~

題目:

枚舉基因排列順序(Enumerating Gene Orders)

Given: A positive integer n<7.

所給:一個小于7的正整數(shù)n。

Return: The total number of permutations of length n, followed by a list of all such permutations (in any order).

需得:n個數(shù)全排列的總數(shù)和所有排列方式(以任意順序給出)。

?

測試數(shù)據(jù)

3

測試輸出

6

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

?

背景

基因組的重排(rearrangement)可以導(dǎo)致巨大變異的發(fā)生,因此很少對物種內(nèi)基因組產(chǎn)生作用。進化關(guān)系較近的物種通常具有相似的基因組結(jié)構(gòu),因此在研究中,研究者往往將物種間相似的部分序列劃為同步塊(synteny blocks),物種間由于重排現(xiàn)象,synteny blocks往往分布到不同染色體的不同位置。我們用數(shù)字簡化表示每個synteny block,研究其排列,進而研究基因組的變化。

?

思路

假設(shè)數(shù)組含有n個元素,則提取數(shù)組中的每一個元素做一次頭元素,然后全排列除數(shù)組中除第一個元素之外的所有元素,這樣就達到了對數(shù)組中所有元素進行全排列的得目的。

(1) n個元素的全排列=(n-1個元素的全排列)+(另一個元素作為前綴);

(2) 出口:如果只有一個元素的全排列,則說明已經(jīng)排完,則輸出數(shù)組;

(3) 不斷將每個元素放作第一個元素,然后將這個元素作為前綴,并將其余元素繼續(xù)全排列,直到出口,出口輸出后還需要還原數(shù)組。

用一個全局變量統(tǒng)計排列的總數(shù)。

?

Python知識點

排列是從n個元素中任取m個元素,并按照一定的順序進行排列。當(dāng)n==m時,稱為全排列。

全排列可以看做固定前i位,對第i+1位之后的再進行全排列,比如固定第一位,后面跟著n-1位的全排列,解決n-1位元素的全排列就能解決n位元素的全排列。

?

代碼

def perm(seq, begin, end):

'''進行排列的函數(shù)'''

??? global num

??? if begin == end:

??????? print(" ".join(seq))

??????? num += 1

??? else:

??????? for index in range(begin, end):

??????????? seq[index], seq[begin] = seq[begin], seq[index]

??????????? perm(seq, begin + 1, end)

??????????? seq[index], seq[begin] = seq[begin], seq[index]

?

num = 0

seq = ['1', '2', '3']

perm(seq, 0, len(seq))

print(num)


【ROSALIND】【練Python,學(xué)生信】19 枚舉基因排列順序的評論 (共 條)

分享到微博請遵守國家法律
宁强县| 牙克石市| 兰考县| 固原市| 娄底市| 杂多县| 台安县| 巴彦淖尔市| 射洪县| 广安市| 贡觉县| 澎湖县| 永登县| 惠水县| 西安市| 泸定县| 新化县| 阿拉尔市| 夏河县| 乡城县| 巫溪县| 岳阳市| 武夷山市| 徐州市| 元江| 景泰县| 綦江县| 赣州市| 手游| 大关县| 汶上县| 北辰区| 南华县| 平度市| 阿克陶县| 衡南县| 成安县| 巧家县| 府谷县| 肇州县| 驻马店市|