2025/12/29 17:34:05
网站建设
项目流程
中国东盟建设集团有限公司网站,招聘网站可以同时做两份简历吗6,网络工程师考试大纲,郑州seo哪家专业这一题看题目就很容易想到动态规划。
题目大意是说给出一个序列#xff0c;在给出的一个L长的序列中找到按照给出的序列的元素顺序排列的子序列的最长的长度。
如何找呢#xff0c;
首先我们需要用哈希表来把给出的序列映射成 0-M-1#xff0c;这样我们在新的L长的序列中再碰…这一题看题目就很容易想到动态规划。题目大意是说给出一个序列在给出的一个L长的序列中找到按照给出的序列的元素顺序排列的子序列的最长的长度。如何找呢首先我们需要用哈希表来把给出的序列映射成 0-M-1这样我们在新的L长的序列中再碰到给出的序列中的元素可以确定它在给出序列中的相对位置是多少 0到M-1中的其中一个然后我们可以看在这个元素之前的元素能否和当前元素连接求单独以这个元素的长度和与之前元素连接的长度的最大值。最后我们分别求以某一个元素为结尾所能构成的最长的子序列的长度。完整代码如下#includebits/stdc.h#includeiostreamusingnamespacestd;vectorintt;vectorintsq;inth[205];intdp[205];intmain(){intN;cinN;intM;cinM;memset(h,-1,sizeof(h));for(inti0;iM;i){intx;cinx;t.push_back(x);h[x]i;}intL;cinL;for(inti0;iL;i){intx;cinx;sq.push_back(x);}for(inti0;iL;i){if(h[sq[i]]-1){continue;}intxh[sq[i]];//表示这个点在哈希表中的位置intpremaxx0;for(intj0;jx;j){premaxxmax(premaxx,dp[j]);}dp[x]max(premaxx1,dp[x]);}intans0;for(inti0;iM;i){ansmax(ans,dp[i]);}coutansendl;return0;}注意与当前元素前面的元素作连接时包括当前元素的本身for(intj0;jx;j){premaxxmax(premaxx,dp[j]);}时间复杂度On^2)