2041
有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数
对于每个测试实例,请输出不同走法的数量
2044
输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)
对于每个测试实例,请输出蜜蜂从蜂房a爬到蜂房b的可能路线数,每个实例的输出占一行
2046
在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.
例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
这三道题有很多共同特点(1)a[i]=a[i-1]+a[i-2](脑海中第一反应函数递归,可惜错了,只能用数组了)
(2)超出了int的范围
(3)要注意数组的范围
2041
#include <stdio.h> int main() { int n; int i; int m; int count; int dp[50]; while(scanf("%d",&n)!=EOF) { dp[1]=1; dp[2]=1; dp[3]=2; while(n--) { count=0; scanf("%d",&m); for(i=4; i<=m; i++) { dp[i]=dp[i-1]+dp[i-2]; } printf("%d\n",dp[m]); } } return 0; }(别人的代码借用一下,自己在别人的电脑上)