【leetcode c++】70 Climbing Stairs

Climbing Stairs

You are climbing a stair case. It takes nsteps to reach to the top.

Each time you can either climb 1 or 2steps. In how many distinct ways can you climb to the top?

 

高考毒太深,我当作一道{普通的排列组合}来解了。

如果按{普通的排列组合}来解,按Leetcode给的输入,最高好像是n=45。这是什么概念呢,阶乘的话。

 

我先说一点,我是直接用longdouble解的,没做额外处理。然后leetcode通过了。

大家都知道,浮点数当数字很大的时候,是不准确的。但是为什么能过呢,关于这个来稍微猜测一下。

 

当n=45的时候,所得的解是1836311903。一共有11位。这也是最大长度的返回值了。那么long double的有效位是多少呢,VS2013&win7-64bit下输出是15位。

是不是:当参与运算的两个数字都非常大时,影响结果的只有前面的若干位了?

 

后来觉得这么暴力解法不是leetcode的风格。参考的网上其他博客的算法,非常纳闷都是写一个斐波那契数列完事了。后来找百度找到,这是斐波那契数列的经典例子。

((((;´・ω・`)))书到用时方恨少。

 

我已经无颜贴代码了,虽然速度是OK的,但是连含铜量都没有。泪目。

你可能感兴趣的:(leetcode)