A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

微软的一个面试题目:一只青蛙一次可以跳一级台阶,也可以一次跳两级台阶,求该青蛙跳上n级台阶总共有多种跳法。
目前接触,掌握循环结构使用,求一个基础班同学们都能看懂的解法~!






3 个回复

倒序浏览
火钳刘明自己顶一个先~~~求各位大神指点、、、、、
回复 使用道具 举报
本帖最后由 oyjs1989 于 2016-5-30 23:27 编辑

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    int n = 0 ,totalsum = 0;
    printf("请输入台阶数:");
    scanf("%d",&n);
    //   实际方法为一串组合累加  1+Cn 1 +Cn-1 2+......+Cn/2 n/2
    //每多跳2层,跳的次数就减少1,数组下标减少1, 而两层的次数+1
    //   比如 输入5  第一次 假定为全部为单层  方法为1
    //             第二次 假定一次双层     方法为C下标为n-1  商标为n的组合的值 即 n-1 4
    //             第三次  假定二次双层     方法次数  为n-2*n-3   即为 6
    //  依次类推
   
    for(int i = 0;i<=n;i++,n--) { //每多一次2级跳 i+1    跳的次数则减1   n-1
        int k = n;
        int sum = 1;
        // 跳i次双层时  可以有几种方法
        for(int j = 1;j<=i;j++){
            sum = k*sum/j;
            k--;
        }
        // 统计全部方法
        totalsum = totalsum+sum;
    }
    // 输出方法
    printf("青蛙可以调的次数是%d\n",totalsum);
    return 0;
}
回复 使用道具 举报
我们班的大神  提问  虽然不懂行  但是必须支持    哈哈哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马