博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【动态规划】最长递增子序列代码(UVA 10131)
阅读量:2234 次
发布时间:2019-05-09

本文共 1194 字,大约阅读时间需要 3 分钟。

题目:

先按大象的体重排序,然后用DP求出大象IQ的最长递减子序列。为了输出这个子序列,每次子序列扩容时使用一个Pre[]数组保存前一个元素的索引,将索引压栈后正序输出。

#include 
#include
#include
#include
#include
using namespace std;typedef struct elephant{ int weight; int iq; int index;}ElephantType;ElephantType Elephants[1001];int Length[1001];int Pre[1001];int compare(ElephantType a, ElephantType b){ if(a.weight < b.weight) return true; return false;}void lis(int n){ int idx; int MaxLength; memset(Length, 0, sizeof(int)*1001); memset(Pre, 0, sizeof(int)*1001); Length[1] = 1; for(int i=2; i<=n; i++) { MaxLength = 0; for(int j=1; j<=i-1; j++) { if(Elephants[j].iq > Elephants[i].iq && MaxLength < Length[j]) { MaxLength = Length[j]; Pre[i] = j; } Length[i] = MaxLength + 1; } } MaxLength = 0; for(int i=1; i
result; result.clear(); while(Pre[idx] != 0) { result.push_back(Elephants[idx].index); idx = Pre[idx]; } result.push_back(Elephants[idx].index); reverse(result.begin(), result.end()); printf("%d\n", result.size()); for(unsigned i=0; i

转载地址:http://hxnbb.baihongyu.com/

你可能感兴趣的文章
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>
Intellij IDEA使用(二)—— 在Intellij IDEA中配置JDK(SDK)
查看>>
Intellij IDEA使用(三)——在Intellij IDEA中配置Tomcat服务器
查看>>
Intellij IDEA使用(四)—— 使用Intellij IDEA创建静态的web(HTML)项目
查看>>