首页 > 编程知识 正文

最大公共字符串python,最长上升子序列动态规划

时间:2023-05-04 05:13:18 阅读:160812 作者:2902

1最大上升子序列链接: https://www.now coder.com/question terminal/dcb 97 b 18715141599 b 64 dbdb8cdea 3bd

来源:牛客网

一个数的序列bi,在b1 b2 . bS的时候,说这个序列在上升。 对于给定的数组(a1,a2,aN ),可以得到上升的子数组(ai1,ai2,aiK )。 这里假设1=i1 i2 . iK=N。 例如,对于数组(1、7、3、5、9、4、8 ),有) 1、7 )、) 3、4、8 )等上升子数组。 这些子阵列中的阵列和最大18是子阵列(1、3、5、9 )之和。 你的任务是对于给定的数组,求最大上升子序列之和。 另外,最长的上升子序列之和不一定是最大的。 例如,数组(100、1、2、3 )的最大上升子序列之和为100,最长的上升子序列为) 1、2、3 )。

输入描述:

输入多组测试数据。 各组的测试数据由两行组成。 第一行是序列的长度n(1=n=1000 )。 第二行表示序列中的n个整数。 这些整数都取10000范围内的值。 有重复的可能性。

输出描述:

对于每组测试数据,输出最大上升子序列和。 例1

71输入73594 8输入18num=int(input () lis=[ int (each ) for each in input ) ).split ) ] defmax_substing ) lis ) 360n=3360n输出的forIinrange(n ) ) I=1temp=0while in : j=I-1 whilej=0: if lis [ j ] lif : temp=DP [ I ] I=1returntempprint (max _ subst ing ) lis ) )修改中间while循环代码,用两个for循环代替

num=int(input ) ) lis=[int(each ) for each in input ) ).split ] def max _ subst ing ) lis ) 3360n=len ) ) -1)扫描: )以分析当前指针iflis[j]lis[I]3360DP[I]=dp[i] ) ifdp [ I ] temp : temp=DP [ I ] returntememp

defmax_long_substring(arr ) :iflen ) arr ) 2:returnlen ) arr ) DP=[1forIinarr]n=len(arr ) temp=0f or

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。