hdu_2046_骨牌铺方格_201311251403

骨牌铺方格

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

Problem Description
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数. 例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
 
 
Input
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。
 
Output
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
 
Sample Input
1 3 2
 
Sample Output
1 3 2
 
Author
lcy
 
Source
 

算法:N个前面有二种做法,1.前面做好了N-1个,则再加一个格子只有一种做法,(N-1)*1

2.前面N-2个已经排好,再加二个格子,只有一种做法(横排,若是竖排则与第一种做法相同),(N-1)*1

加法原理f(n)=f(n-1)+f(n-2)

 
 1 #include <stdio.h>
 2 
 3 __int64 s[55];
 4 
 5 int main()
 6 {
 7     int i,n;
 8     s[1]=1;s[2]=2;
 9     for(i=3;i<=50;i++)
10     {
11         s[i]=s[i-1]+s[i-2];
12     }
13     while(scanf("%d",&n)!=EOF)
14     {
15         printf("%I64d
",s[n]);
16     }
17     return 0;
18 }


long long int型数组不能通过;用__int64;输出用I64d%输出

 
原文地址:https://www.cnblogs.com/xl1027515989/p/3441447.html