一只顽猴在一座有50级台阶的小山上爬山跳跃。上山时需从山脚至山顶往上跳50级台阶,一步可跳2级,或跳3级,或跳4级,求上山有多少种不同的跳法?下山时从山顶至山脚往下跳50级台阶,一步可跳1级,或跳2级,或跳3级,求下山有多少种不同的跳法?
程序怎样写?

解决方案 »

  1.   

    #include <stdio.h>//状态存储数组
    double way[52];int main () 
    {
    //初始化
    way[1] = 0;
    way[2] = 1;
    way[3] = 1;
    way[4] = 2; for (int i=5; i<=50; i++)
    {
    way[i] = way[i-2]+way[i-3]+way[i-4];
    }
    printf("上山的跳法:%.0lf\n", way[50]); //初始化
    way[0] = 0;
    way[1] = 1;
    way[2] = 2;
    way[3] = 4;
    for (int i=4; i<=50; i++)
    {
    way[i] = way[i-1]+way[i-2]+way[i-3];
    }
    printf("下山的跳法:%.0lf\n", way[50]); return 0;
    }
      

  2.   


    int flag = 0;//计数
    for (int i = 0; i <= 50 / 4; i++) {
    for (int j = 0; j <= (50 - 4 * i) / 3; j++) {
    for (int k = 0; k <= (50 - 4 * i - 3 * j) / 2; k++) {
    if (4 * i + 3 * j + 2 * k == 50)
    flag++; }
    }
    }