华为OJ试题整理

本文整理了华为在线评测系统(OJ)中的一道题目,涉及最长上升子序列和最长下降子序列问题。通过分析,给出了以每个元素为中间的最长合唱队的解题思路,包括如何求解最长上升子序列和最长下降子序列,并介绍了动态规划的解决方法。
摘要由CSDN通过智能技术生成

华为OJ试题整理
1.合唱队
这里写图片描述

分析:
涉及到最长上升子序列和最长下降子序列的问题。
首先设以第i个人为中间的Ti,则求出从前往后到第i个人的最长上升子序列,然后求出从第i个人到最后一个人的最长下降子序列。得到的总长度为最长的合唱队长队。
最长上升自序列的算法:
对于原始数组org[];new一个新的数组result[],用来存储原始数组里每一个元素的最长上升子序列的长度。对于i每一个元素来说,自己一定是自己的子集,所以初始化为1.首先对任意一个元素org[i]而言,在org[0]~org[i]中寻找最长的上升子序列。如果在这段数据中,org[j]的最长上升子序列的长度为result[j],org[i]的最长公共子序列一定包括org[j]的{最长上升子序列,org[i]},所以长度为org[j]+1.
最长下降子序列的思路与上面相似。

package com.whu.wsy;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值