上20阶楼梯,可以一次迈1,2,3步,请问有多少种上法?
很老的题目了,但是看到一种方法,非递归,贪心算法,遍历所有的可能的组合,并打印所有的步骤。
void Calc_floors() { int n=1; for (int X=0; X <=20; X++) { for (int Y=0; Y <=10; Y++) { for (int Z=0; Z <7; Z++) { if (X + 2*Y + 3*Z == 20) cout << n++ << ": 1 per-" << X << " steps; 2 per-" << Y << " steps; 3 per-" << Z << " steps\n "; } } } cout << "Sum is: " << n << " ways!" <<endl; }