题意:给你长度为2,宽度为1的砖,给你一定长度,求可以摆的砖的方式,看图更容易理解↓
思路:递推
1:1
2:1+1=2
3:1+2=3
4:2+3=5
5:3+5=8
……
满足规律:m[x]=m[x-1]+m[x-2]
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int n; 5 #define MAXN 51 6 long long m[MAXN]; 7 bool datecin() 8 { 9 if(scanf("%d",&n)!=EOF) 10 { 11 if(n==0) 12 return false; 13 return true; 14 }ac 15 return false; 16 } 17 18 void datecal() 19 { 20 21 m[0]=1,m[1]=1; 22 for(int i=2;i<MAXN;i++) 23 m[i]=m[i-1]+m[i-2]; 24 } 25 26 void showres() 27 { 28 printf("%lld\n",m[n]); 29 } 30 int main() 31 { 32 datecal(); 33 while(datecin()) 34 { 35 showres(); 36 } 37 return 0; 38 }