骨牌铺方格
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%输出