我的规划规划

  • 第一阶段----三年
  • 我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段
  • 第二阶段----五年
  • 五年又是区分程序员的第二个门槛。有些人在三年里,除了完成工作,在空余时间基本不会研究别的东西,这些人永远就是个Coder,年纪大一些势必被更年轻的人给顶替;有些人在三年里,除了写代码之外,还热衷于研究各种技术实现细节、看了N多好书、写一些博客、在Github上分享技术,这些人在五年后必然具备在技术上独当一面的能力并且清楚自己未来的发展方向,从一个Coder逐步走向系统分析师或是架构师,成为项目组中不可或缺的人物
  • 第三阶段----十年
  • 十年又是另一个门槛了,转行或是继续做一名程序员就在这个节点上。如果在前几年就抱定不转行的思路并且为之努力的话,那么在十年的这个节点上,有些人必然成长为一名对行业有着深入认识、对技术有着深入认识、能从零开始对一个产品进行分析的程序员,这样的人在公司基本担任的都是CTO、技术专家、首席架构师等最关键的职位,这对于自己绝对是一件荣耀的事,当然老板在经济上也绝不会亏待你
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
动态规划是一种解决一类最优化问题的算法,它通常用于解决具有重复子问题和最优子结构性质的问题。动态规划算法通常需要使用一个表格来存储中间结果,以便在计算后面的结果时可以重复利用这些中间结果。 下面,我将通过一个简单的例子来介绍动态规划的基本思想和实现方法。 假设有一个长度为n的序列,我们希望找到这个序列中的最长上升子序列(LIS)。最长上升子序列是指在给定的序列中,一个严格递增的子序列,它的长度最长。 为了解决这个问题,我们可以使用动态规划的方法。具体来说,我们可以定义一个数组dp,其中dp[i]表示以第i个元素为结尾的最长上升子序列的长度。对于任意的i<j,如果a[i]<a[j],那么以第j个元素为结尾的最长上升子序列的长度可以通过将第i个元素加入以第i个元素为结尾的最长上升子序列得到。因此,我们可以使用以下递推式来计算dp[j]: ```cpp dp[j] = max(dp[i] + 1),其中0 <= i < j 且 a[i] < a[j] ``` 最后,我们可以通过遍历dp数组来找到最长的上升子序列的长度,即: ```cpp int max_len = 0; for (int i = 0; i < n; i++) { max_len = max(max_len, dp[i]); } ``` 完整的动态规划代码如下: ```cpp int n = 6; vector<int> a = { 5, 6, 7, 1, 2, 8 }; vector<int> dp(n, 1); for (int j = 1; j < n; j++) { for (int i = 0; i < j; i++) { if (a[i] < a[j]) { dp[j] = max(dp[j], dp[i] + 1); } } } int max_len = 0; for (int i = 0; i < n; i++) { max_len = max(max_len, dp[i]); } cout << "最长上升子序列的长度为:" << max_len << endl; ``` 这个例子展示了动态规划的基本思想和实现方法,但实际上动态规划可以应用于各种各样的问题。要使用动态规划解决问题,关键是要找到问题中的重复子问题和最优子结构性质,并使用表格来存储中间结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值