01串
- 描述
-
ACM的zyc在研究01串,他知道某一01串的長度,但他想知道不含有“11”子串的這種長度的01串共有多少個,他希望你能幫幫他。
注:01串的長度爲2時,有3種:00,01,10。
- 輸入
- 第一行有一個整數n(0<n<=100),表示有n組測試數據;
隨後有n行,每行有一個整數m(2<=m<=40),表示01串的長度; - 輸出
- 輸出不含有“11”子串的這種長度的01串共有多少個,佔一行。
- 樣例輸入
-
2 2 3
- 樣例輸出
-
3 5
這題和以前做過的一道關於上臺階的方法數類似,就是每邁一步,可以邁一節或兩節,求有多少種方法可以達到頂層
求到達當前臺階的方法就等於前一節加前兩節的方法數的總和,因爲一次可以邁一節或兩節
所以這其實是斐波那契數列,這題也一樣,請讀者自行理解
#include <stdio.h> int a[45][2]; int main(){ a[1][0] = 1; a[1][1] = 1; int i, j; for (i = 2; i <= 40; i++){ a[i][0] = a[i - 1][0] + a[i - 1][1]; a[i][1] = a[i - 1][0]; } int t; scanf("%d", &t); while (t--){ int n; scanf("%d", &n); printf("%d\n", a[n][0] + a[n][1]); } return 0; }