有一个台阶, 总级数为A(A小于等于100). 从下往上跳, 每次可以跳B级, 也可以跳C级(B或C都有可能大于100, 可以只跳B级跳完整个台阶, 也可以只跳C级跳完整个台阶).请问一共有多少种跳法可以跳完这个台阶(计算出总的跳法排列组合个数, 伪代码即可)
例如: A= 5, B=2, C=3, 则排列组合结果为: 11 111;(1代表以及台阶, 此种跳法为先跳2级, 在跳3级) 111 11. 所以结果为2种。
func digui(tree:Tree, surplus: Int,num1: Int,num2: Int,count: Int) -> Int{
var b:Int , c:Int;
tree.left = Tree()
tree.right = Tree()
if (tree.begin == surplus){
return count + 1;
}else if(tree.begin > surplus){
return count;
}else{
tree.left!.begin = tree.begin + num1;
b = digui(tree: tree.left!,surplus: surplus, num1: num1, num2: num2, count: count)
tree.right!.begin = tree.begin + num2;
c = digui(tree: tree.right!,surplus: surplus, num1: num1, num2: num2, count: count)
}
return b + c;
}
class Tree{
var begin: Int = 0
var left: Tree?
var right: Tree?
}
func test(A: Int, B: Int, C: Int)->Void{
if (A >= 100){
return;
}
if (B > A && C > A){
print("次数 = 0")
return;
}else if(B == A && C == A){
print("次数 = 1")
return;
}
let bTree = Tree();
bTree.begin = B;
let bCount = digui(tree: bTree,surplus: A, num1: B, num2: C, count: 0)
let cTree = Tree();
cTree.begin = C;
let cCount = digui(tree: cTree,surplus: A, num1: B, num2: C, count: 0)
print("次数 = \(bCount + cCount)")
}
test(A: 5, B: 2, C: 3)
思想
test(A: 7, B: 2, C: 3)
B为开始的可能
C为开始的可能