我的算法和1楼不一样
//
// main.c
// 青蛙跳台阶的算法
//
// Created by Lennon on 16/5/29.
// Copyright © 2016年 Lennon. All rights reserved.
//
#include <stdio.h>
int main() {
// 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 = sum*k/j;
k--;
}
// 统计全部方法
totalsum = totalsum+sum;
}
// 输出方法
printf("青蛙可以调的次数是%d\n",totalsum);
return 0;
}
|