打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
当你觉得是大牛的时候,过来看看分分钟被秒杀,做人一定要低调

有这么一题

有一个楼梯总共n个台阶,只能往上走,每次只能上1个、2个台阶,总共有多少种走法。

小牛的程序员想了想:

解决方案:

dp[n] 表示n个台阶的走法,那么有:

dp[n]=dp[n-1] dp[n-2];

dp[1]=1;dp[2]=2;

这能难到我,

int stepNumer(int n){ if (n < 3) return n; else return stepNumer(n - 1) stepNumer(n - 2);}

大神级别的程序员来了

一看,随着n数一直增长,大量重复的计算,使得复杂度呈指数爆炸增长。

你的递归算法,时间复杂性,随着n的增加,一直爆表。

看我的,动态规划的算法 通过牺牲空间复杂度来换取时间复杂度的降低。

int stepNumer(int n){ int step1 = 1;  int step2 = 2;  int stepN = 0; for (int i = 2;i < n;i  ) { tempN = step1   step2 ;  step1 = step2 ;  step2 = tempN ;  } return n<3?n:tempN;

然后点评了一下:每个f(n)只需计算一次然后记录下来,避免了大量重复的计算

动态规划通过牺牲空间复杂度来换取时间复杂度的降低,单大多情况下牺牲是值得的。

小子你的算法不错,不过还是嫩了点,再好好干几年,修行一下。

然后满意的走了,一天的心情很是高兴。

突然有一天,在地摊卖菜,原本是数学系,出了社会没找到工作,看到这题,不懂代码,随手写了写。

dp[n]=dp[n-1] dp[n-2];

dp[1]=1;dp[2]=2;

根据f(n)=f(n-1) f(n-2),推出特征方程

吸了根烟,长长叹了口气,默默的推着三轮车走了。

过了几天,大牛小牛回来了,本想瞻仰一下,自己的代码,是何等的牛B,回温一下当时的成就感。当他们看到

这些公式,什么递归,什么动态规划,在公式面前显示如此苍白,只留下一脸忙然~~

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
贪心算法:买卖股票的最佳时机II
动态规划DP问题分类和经典题型
剑指offer(C++)-JZ46:把数字翻译成字符串(算法-动态规划)
576,动态规划解最长公共子串
回溯算法和动态规划,到底谁是谁爹?文末送书
【小Y学算法】⚡️每日LeetCode打卡⚡️——5.最长回文子串
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服