uq_32703969699


私信TA

用户名:uq_32703969699

访问量:53

签 名:

等  级
排  名 15795
经  验 778
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:利用动态规划,确定出到每一个数字的时候,所对应的dp[i]为多少


dp[i]表示为在第i个数字时,前i个数字能组成的最长不下降子序列的长度


例如给出一个数列: 1 3 5 2 8 7

dp[4]=4(注意i为下标,数字8对应的下标为4,通过观察,到达数字8时,所能够构成的最长不下降子序列为 1 3 5 8,即长度为4)而我们需要用代码去实现这个过程


找出dp[i]的转移特性方程——当我们给出的序列长度为1时,那么我们的dp[i]=dp[1]=1,只有这唯一的结果,当我们输入的序列长度大于1时,初始化所有的dp[i]为1(因为我们可以将数列的每一位都当成是一个不下降子序列,长度为1,不过我们需要找出的是最长的不下降子序列)


直接上代码(语法类的问题可以去菜鸟教程搜寻)

通过两个for循环依次找到第i个数字的前j个数字组成的序列中,最长不下降的子序列为多少

第一次写题解QAQ(如有不对的地方请指正谅解

注意事项:
对于有些特定的题目,dp数组需要提前定义好长度,以防止数组越界,本题中寻找某个数字的最长上升序列时,就需要找到该数字前一项的最长上升序列

代码中的#include<algorithm>没有用上,故可以不写,在最核心的比较部分,也可以使用algorithm中的max函数进行比较。

参考代码:

959417E5736FE76D1BAAC068293BC0DE.png

 

0.0分

3 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区