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