1. 程式人生 > >hdu 2046 骨牌鋪方格(遞推 斐波那契數列)

hdu 2046 骨牌鋪方格(遞推 斐波那契數列)

                                    骨牌鋪方格

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 50253 Accepted Submission(s): 24237

Problem Description

在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數.
例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖:

這裡寫圖片描述

Input

輸入資料由多行組成,每行包含一個整數n,表示該測試例項的長方形方格的規格是2×n (0 < n < =5 0)。

Output

對於每個測試例項,請輸出鋪放方案的總數,每個例項的輸出佔一行。

Sample Input

1
3
2

Sample Output

1
3
2

本題思路:
一開始用dfs做,結果自然的超時了。於是發現原來是個遞推題。
過程如下:
每當增加一個空位時如果豎著放的話,方法為f[n-1],
如果橫著放,就需要兩個,把第n-1和第n 個橫著放,方法為f[n-2]
所以遞推出公式f[n]=f[n-1]+f[n-2]

#include<stdio.h>
#include<stdlib.h>

int main(){
    long long
f[52]={1,1,2,3}; int num,i; for(i=4;i<=50;i++) f[i]=f[i-1]+f[i-2]; while(~scanf("%d",&num)){ printf("%I64d\n",f[num]); } return 0; }

相關推薦

hdu 2046 骨牌方格 數列

骨牌鋪方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To

HDU 2046 骨牌方格

題目:HDU-2046 骨牌鋪方格 題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2046 題目: 骨牌鋪方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit:

HDOJ-2046 骨牌方格

題目:HDOJ-2046 題目描述:在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數. 例如n=3時,為2× 3方格,骨牌的鋪放方案有三種,如下圖: 思路:(遞推) 對n位置情況進行討論 ①n位置1個骨牌豎著放,對前n-1無影響,所以等於f(n

HDU 2046 骨牌方格

骨牌鋪方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28606    Accepted Submissi

HDU 2046 骨牌方格(簡單

連結:http://acm.hdu.edu.cn/showproblem.php?pid=2046 骨牌鋪方格 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe

hdoj 2046 骨牌方格

        在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數. 思路:  兩種情況:              情況 1: 在長方形方格末尾豎著放一個牌, 就轉化為2*(n-1)的問題;               情況2 : 在長

hdoj 2046 骨牌方格

在2×n的一個長方形方格中,用一個1× 2的骨牌鋪滿方格,輸入n ,輸出鋪放方案的總數. 思路: 兩種情況: 情況 1: 在長方形方格末尾豎著放一個牌, 就轉化為2*(n-1)的問題; 情況2 : 在長方形方格末尾橫

【CF446C】DZY Loves Fibonacci Numbers 線段樹 + 數列

nac ++ return isp mat span 先來 sum scrip Description ? 看題戳我 給你一個序列,要求支持區間加斐波那契數列和區間求和。\(~n \leq 3 \times 10 ^ 5, ~fib_1 = fib_2 = 1~\). So

java:迴練習數列

package com.heima.test; public class Test5 { public static void main(String[] args) { demo1(); System.out.println(fun(8)); } //使用陣列求斐波那契數列

fibonacii數列數列迴實現及迴圈實現

public class Fibonacii { public static long fibo(int num){ //遞迴方法 if(num==1||num==2) //定義出口 return 1; return fibo(num-1)+fibo(

Java 兔子問題數列擴展篇

aik 第一個 truct func main target htm bre trace Java 兔子問題(斐波那契數列)擴展篇 斐波那契數列指的是這樣一個數列 0, 1, 1, 2,3, 5, 8, 13, 21, 34, 55, 89, 144, ...對於這個

找一找數列

數列 || amp question 滿足 mil 一個 輸出 family 題目要求:給定n個正整數,請找出其中有多少個數x滿足:在這n個數中存在數y,使y=kx,其中k為大於1的整數 輸入描述 : 第一行輸入一個n,接下來一行輸入n個正整數ai 輸出描述:輸出符合條件個

兩種方法數列

times ret Coding value self. utf-8 () 數列 fib __author__ = ‘hechangting‘ #ecoding=utf-8 import itertools #叠代器 class Fib: def __init__

基礎歸 - 數列

基礎 ret sin 參考 循環 style 題目 描述 輸入 【題目描述】 求斐波那契數列的第n項。 【算法分析】 這篇博文主要面對新人學習,求dalao不打。 相信主函數那一塊大家都會寫,聲明變量,輸入變量,打印結果即可。 所以求值的函數就是我們深究的內容。

Java中的不死神兔數列

三種方法實現例項: package test17_digui; import java.util.Scanner; /* * 題目:有一對兔子,從出生後第3個月起每個月都生1對兔子,小兔子第三個月後也可以生一對兔子, * 假如兔子不死,在指定月份時刻一共可以有多少對兔子 *

兔子的繁殖問題數列

Problem A: 兔子的繁殖問題 假設一對兔子每月能生一對小兔(一雌一雄),每對小兔出生後的下一個月是沒有繁殖能力的,至出生後的第三個月開始又可以每月生一對小兔,問從一對剛出生的小兔開始,經過若干個月後一共有多少兔子(假設在此過程中兔子沒有死亡)? 這個問題

codeforces316E3 Summer Homework線段樹,數列

pan hang 題目 using queue main scanf spa 維護 題目大意 給定一個n個數的數列,m個操作,有三種操作: \(1\ x\ v\) 將\(a_x\)的值修改成v \(2\ l\ r\\) 求 \(\sum_{i=l}^r x_i*f_{i-

再刷PAT系列~ 1008 童年生活二三事數列

題目描述 NowCoder小時候走路喜歡蹦蹦跳跳,他最喜歡在樓梯上跳來跳去。 但年幼的他一次只能走上一階或者一下子蹦上兩階。 現在一共有N階臺階,請你計算一下NowCoder從第0階到第N階共有幾

極值問題-數列

已知m、n為整數,且滿足下列兩個條件: ① m、n∈{1,2,…,k},即1≤m,n≤k ②(n2-m*n-m2)2=1 你的任務是:程式設計輸入正整數k(1≤k≤109),求一組滿足上述兩個條件的m、n,並且使m2+n2的值最大。例如,從鍵盤輸入k=199

不死兔數列

public static void main(String[] args) { /** * 需求:有一對兔子,從出生後第3個月起每個月都生一對兔子, * 小兔子長到第三個月後每個月又生一對兔子, * 假如兔子都不死,問第二十個月的兔子對數為多少? *