NYOJ 252 01串

01串

時間限制:1000 ms  |  內存限制:65535 KB
難度:2
描述

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

思路:

  1.設長度爲k的字符串中不含‘11’子串的字符串個數爲dp[k]

    (1).當第k個字符爲0時,不含“11”的子串個數爲dp[k-1]

   (2).當第k個字符爲1時,k-1位必定爲0,所以不含“11”的子串爲dp[k-2]

2.找規律,就是斐波那契數列

代碼:

#include<stdio.h>
int main()
{
  int dp[50];//
  dp[2]=3;
  dp[3]=5;
  for(int i=4;i<=42;i++)
  {
     dp[i]=dp[i-1]+dp[i-2];	
  }		
  int n;
  int a;
  scanf("%d",&n);
  while(n--)
  {
  
  	scanf("%d",&a);
  	printf("%d\n",dp[a]);
  } 
} 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章