生活随笔
收集整理的這篇文章主要介紹了
C语言描述:DNA
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
小強(qiáng)從小就喜歡生命科學(xué),他總是好奇花草鳥(niǎo)獸從哪里來(lái)的。終于, 小強(qiáng)上中學(xué)了,接觸到了神圣的名詞–DNA.它有一個(gè)雙螺旋的結(jié)構(gòu)。這讓一根筋的小強(qiáng)抓破頭皮,“要是能畫(huà)出來(lái)就好了” 小強(qiáng)喊道。現(xiàn)在就請(qǐng)你幫助他吧
輸入
輸入包含多組測(cè)試數(shù)據(jù)。第一個(gè)整數(shù)N(N<=15),N表示組數(shù),每組數(shù)據(jù)包含兩個(gè)整數(shù)a,b。a表示一個(gè)單位的DNA串的行數(shù),a為奇數(shù)且 3<=a<=39。b表示重復(fù)度(1<=b<=20)。
輸出
輸出DNA的形狀,每組輸出間有一空行。
樣例輸入
2
3 1
5 4
樣例輸出
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X
X X
X
X X
X X
思路:
解題思路與注意事項(xiàng):
首先,我們做個(gè)圖,觀察圖的i,j。我們就以(5,3)例子。我們先完成一個(gè)‘X’的輸出,分別是i==j與i+j == 4,這些我們可以從圖中觀察出來(lái),并用兩點(diǎn)計(jì)算出方程。一個(gè)‘X’的實(shí)現(xiàn),以及下面的重復(fù),都是可以利用數(shù)學(xué)知識(shí)來(lái)實(shí)現(xiàn)的
我們可以清楚的明白,上面的‘X’與下面的‘X’的斜率是一樣的,所以我們只需要知道每個(gè)‘X’往下移動(dòng)了多少,由圖我們知道在(5,3)的情況下每次只移動(dòng)了四格,但是,利用多組數(shù)據(jù),再聯(lián)系上(n,k)可知,每次移動(dòng)了n-1格,所以,我們寫(xiě)方程的時(shí)候可編程 i==j+s與i+j ==n-1+s,s的初值設(shè)置為0,DNA分3段,當(dāng)i到n-1的倍數(shù)是s便自加n-1,用于移動(dòng),從而實(shí)現(xiàn)重復(fù)。輸出DNA的形狀,每組輸出間有一空行。在count遞減一次時(shí),要輸出換行。
#include<stdio.h>
int main()
{int i
,j
,s
=0,n
,k
,count
;scanf("%d",&count
);while(count
){scanf("%d%d",&n
,&k
);s
=0;for(i
=0;i
<n
*k
-k
+1;i
++){for(j
=0;j
<n
;j
++){if(i
==j
+s
||i
+j
==n
-1+s
)printf("X");else printf(" "); }if(i
%(n
-1)==0&&i
!=0)s
=s
+n
-1;printf("\n");}count
--;printf("\n");}return 0;
}
總結(jié)
以上是生活随笔為你收集整理的C语言描述:DNA的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。