在1×n的一个长方形方格中,用1×1、1×2、1×3的骨牌铺满方格,输入n ,输出铺放方案的总数。 例如n=3时,为1× 3方格,骨牌的铺放方案有四种,如下图:
输入
输入数据由多行组成,每行包含一个整数n,表示该测试实例的长方形方格的规格是1×n (0
输出
对于每个测试实例,请输出铺放方案的总数,每个实例的输出占一行。
样例输入
1 2 3 0
样例输出
1 2 4
#include <stdio.h> int main(){ int dp[50]; int n, i; dp[1] = 1; dp[2] = 2; dp[3] = 4; while (scanf("%d", &n)==1 && n!=0){ for (i=4; i<=n; i++){ dp[i] = dp[i-3]+dp[i-2]+dp[i-1]; } printf("%d ", dp[n]); } return 0; }