csdn是疯了吗,右下角的广告是一个人站在猪屁股后面打它。。。看了一下居然是baidu算出来的广告嵌在了iframe里,fixed to viewport,真是够了。最近还频频出现的广告是一个光头男子双手抱头痛苦状趴在桌子上,上面写着”前端薪资多少“,好了,我已经看到未来的下场了:一个掉秃了毛的穷光蛋。

c++写算法比起其他语言来感觉还是有优势的,在STL的基础上,同样的一道算法题,往往实现起来C++的代码最短。但是!自从开始搞前端,很久没用了。。看还是没问题的,写的时候就有恍如隔世的感觉。。。说到底还是学艺不精啊。。。。

感觉js的“人造性”更强,比如数组和字符串都有很多自带的function,而且有一种不拘于数据类型的灵活性(严格说,也不知道是好坏,可能比较省事吧)。写算法的话,网上的提交工具许多是用node 中readline 输入输出(readline简单使用可参考http://www.jb51.net/article/100229.htm),不过需要自己解析下输入,这里正则的知识最好了解一点,然后输出在回调函数中console.log就可以了。

网上的算法题,普遍以c++,java 实现的多,其他语言少,js就更少了,之前看了一本巴西谁写的js数据结构与算法,也很简单。不过语言只是个壳子,道理是一样的。准备连载一些用 js实现的常见算法,我是个渣渣,代码基本都跑过,但可能有些冗余啊什么的,调试的时候忘了删掉。总之仅供参考。

第一篇,动态规划之最长公共子序列。原理参考这篇吧。dp[i][j]保存了LST的长度,lst保存了每一个增长中的子序列,当lst.length==dp[lena][lenb]时,为最长子序列之一,将其输出。

function lstd(stra,strb){var n,i,j;var dp=[],lst=[];var max=function(a,b){return (a>b?a:b);};var arr=stra.split("");var brr=strb.split("");var lena=arr.length;var lenb=brr.length;// corefor(i=0;i<lena+1;i++){dp[i]=[];for(j=0;j<lenb+1;j++){if(i==0||j==0) dp[i][j]=0;else if(arr[i]===brr[j]){dp[i][j]=dp[i-1][j-1]+1;}else{dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}}var lst="";var traceback=function(i,j,lst){while(i>0&&j>0){if(arr[i-1]===brr[j-1]){lst+=arr[i-1];if(lst.length===dp[lena][lenb]){console.log(lst.split("").reverse().join(""));}//输出,这里用了数组的reverse和join方法i--;j--;}else{if(dp[i-1][j]>dp[i][j-1]){--i;}else if(dp[i-1][j]<dp[i][j-1]){--j;}else{traceback(i-1,j,lst);traceback(i,j-1,lst);return;   //千万不要忘了return!!!}}}};traceback(lena,lenb,lst);return dp[lena][lenb]; //公共子序列的最大长度}x="ABCBDAB";y="BDCABA";
lstd(x,y);

在谷歌上跑的,结果是:
BCBA
BCAB
BDAB
4

明天有个实习的面试,希望能过,但是感觉自己啥都不会,哎。。。。

更新:面试果然挂掉了

javascript写算法(一) 动态规划:最长公共子序列相关推荐

  1. 算法:动态规划——最长公共子序列

    文章目录 一.动态规划概念 1. 动态规划步骤 最长公共子序列问题 题目 示例 分析 代码(递归) 查表 打印最长公共子序列 一.动态规划概念 动态规划算法与分治法类似,其基本思想也是将待求解问题分解 ...

  2. 算法设计-动态规划——最长公共子序列

    算法介绍 动态规划: 动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解.动态规划算法与分治法类似,其基本思想也是将待 ...

  3. 详解动态规划最长公共子序列--JavaScript实现

    前面两篇我们讲解了01背包问题和最少硬币找零问题.这篇将介绍另一个经典的动态规划问题--最长公共子序列.如果没看过前两篇,可点击下面链接. 详解动态规划最少硬币找零问题--JavaScript实现 详 ...

  4. 最长公共子序列动态规划c语言,动态规划----最长公共子序列(C++实现)

    最长公共子序列 题目描述:给定两个字符串s1 s2 - sn和t1 t2 - tm .求出这两个字符串的最长公共子序列的长度.字符串s1 s2 - sn的子序列指可以表示为 - { i1 < i ...

  5. 动态规划1--最长公共子序列

    动态规划1--最长公共子序列 一.动态规划 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题.简单地采用把大问题分解成子问题,并 综合子问题的解导出大问题的解的方法,问题求解耗时 ...

  6. 动态规划—最长公共子序列问题 HDU-1159 Common Subsequence

    动态规划-最长公共子序列问题 Common Subsequence [ HDU - 1159 ] A subsequence of a given sequence is the given sequ ...

  7. 最长公共子序列php,动态规划(最长公共子序列LCS)

    概念 求解决策过程最优化的结果 (可能有多个) 把多阶段过程转化为一系列单阶段过程,利用各阶段之间的关系,逐个求解 计算过程中会把结果都记录下,最终结果在记录中找到. 举例 求两个字符串的最长公共子序 ...

  8. 算法知识之最长公共子序列问题(动态规划)

    最近朋友让帮做个关于动态规划的最长公共子序列的问题,翻看以前的笔记并完成该题后,顺便写这样一篇文章,希望对大家有所帮助,同时也帮助自己回顾该知识点. 一.最长公共子序列的定义 子序列:若给定序列X={ ...

  9. 【啃不完的算法导论】- 动态规划 - 最长公共子序列(概念篇)

    以下内容纯是为了熟悉<算法导论>中的内容,高手可略过,其中涉及的书本内容的版权归原作者.译者.出版社所有 ========================================= ...

  10. 动态规划算法之:最长公共子序列 最长公共子串(LCS)

    1.先科普下最长公共子序列 & 最长公共子串的区别: 找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的.而最长公共子序列则并不要求连续. 2.最长公共子串 其实这是一个序贯决策问题 ...

最新文章

  1. sql的nvl()函数
  2. win10安装java1.8开发环境JDK
  3. 使用命名空间解决名字冲突
  4. mysql里的max怎么用_MySQL中的max()函数使用教程
  5. 数字孪生营销_如何通过数字营销增加您的自由职业收入
  6. 多个折线样式_新技能get,折线图转化成多阶梯瀑布图
  7. sharepoint小 tip
  8. Android权限管理之Permission权限机制及使用
  9. cgroup学习(八)——CPUSET子系统
  10. ts无损剪辑合并_视频如何合并?视频合并太难?其实很简单
  11. 22条创业军规,让你5分钟读完《创业维艰》
  12. 2021-09-19
  13. 使用java抓取金山词霸的每日一句
  14. Aprioriall算法
  15. 传统算法与神经网络算法,常见的神经网络算法有
  16. 7.Unity中c#代码学习(物理系统刚体+碰撞检测(爆炸效果实现))
  17. 【零基础】从零开始学神经网络《python神经网络编程》——手写数字识别实战
  18. java得到sql语句表名_使用fdb-sql-parser替换SQL语句中的表名
  19. 基于web的大学生英语听说教学平台s
  20. android开发工程师三大历程

热门文章

  1. Vysor无线连接投屏使用
  2. 回忆——电脑陪伴走过的路
  3. ZBrush中的皮肤纹理是怎么雕刻出来的
  4. 罗芬激光COHERENT相干pmb电源维修HPC840
  5. 使用kbmmw 生成客户端delphi函数原型
  6. npp夜光数据介绍 viirs_最新 夜光遥感影像VIIRSDMSP下载总结
  7. 【日常】服务器入门补充
  8. tomcat下多个app 不同的图标_四张图带你了解Tomcat系统架构让面试官颤抖的Tomcat回答系列!...
  9. linux oracle无法解析指定的连接标识符_Oracle连接出现ora-12154无法解析指定的连接标识符...
  10. f-chart 太阳能热过程设计计算