黑马程序员技术交流社区

标题: 寻求大神指导,看到的一个微软面试题~ [打印本页]

作者: yu2323637    时间: 2016-5-29 21:43
标题: 寻求大神指导,看到的一个微软面试题~
微软的一个面试题目:一只青蛙一次可以跳一级台阶,也可以一次跳两级台阶,求该青蛙跳上n级台阶总共有多种跳法。
目前接触,掌握循环结构使用,求一个基础班同学们都能看懂的解法~!







作者: yu2323637    时间: 2016-5-29 21:44
火钳刘明自己顶一个先~~~求各位大神指点、、、、、
作者: oyjs1989    时间: 2016-5-29 23:35
本帖最后由 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;
}
作者: 选择天涯    时间: 2016-5-29 23:52
我们班的大神  提问  虽然不懂行  但是必须支持    哈哈哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2