博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TJU1004
阅读量:5152 次
发布时间:2019-06-13

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

呵呵~~经典动态规划题。当然,这题的数据规模不大,所以就算搜索也不会tle。当然,最好的办法还是动规。这里我用的是搜索+剪枝的办法。
仔细分析一下题目,求一套导弹系统能击落多少导弹就是问你这个数列中最长的不下降(降序)子序列。求要多少导弹系统才能击落所有导弹就是问你这个数列中最长的上升(升序)子序列。第二点我说明一下,一个数列必定存在升序子序列,这个序列里面的任何两个数(两颗导弹)不能被分在一起(被同一个导弹系统击落),而最长的升序子序列的长度就是需要导弹系统的数量。
所以,我优化以后的代码就是这个样子:
None.gif
#include
<
iostream
>
None.gif
using
 
namespace
 std;
None.gif
None.gif
#define
 MAX 20
None.gif
void
 Missile(
int
 current,
int
 step,
int
 index,
int
 lastindex);
None.gif
int
 height[MAX],MaxCount,t;
None.gif
int
 main()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
{
InBlock.gif    
while(cin>>height[t++])
InBlock.gif        
if(20==t) break;
InBlock.gif    t
--;
InBlock.gif    Missile(
0,0,0,-1);
InBlock.gif    cout
<<MaxCount<<' ';
InBlock.gif    MaxCount
=0;
InBlock.gif    Missile(
0,1,0,-1);
InBlock.gif    cout
<<MaxCount<<endl;
InBlock.gif    
return 0;
ExpandedBlockEnd.gif}
None.gif
void
 Missile(
int
 current,
int
 step,
int
 index,
int
 lastindex)
//
step=0:decrease,step=1:increase
ExpandedBlockStart.gifContractedBlock.gif
dot.gif
{
InBlock.gif    
if(current>MaxCount) MaxCount=current;
InBlock.gif    
if(t==index)return;
InBlock.gif    
if((index+1-current)<(t-MaxCount))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        index
++;
InBlock.gif        Missile(current,step,index,lastindex);
InBlock.gif        index
--;
ExpandedSubBlockEnd.gif    }
InBlock.gif    
if(-1==lastindex || (step ? height[index]>=height[lastindex] : height[index]<=height[lastindex]))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        lastindex
=index++;
InBlock.gif        Missile(
++current,step,index,lastindex);
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif}

转载于:https://www.cnblogs.com/FancyMouse/articles/219500.html

你可能感兴趣的文章
JavaScript基础篇
查看>>
色块图
查看>>
SQL游标写入时触发
查看>>
两个应用的跳转
查看>>
Centos7,Docker-配置自动化环境镜像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)...
查看>>
c#获取本机ip地址|获取本机的本地上网IP地址
查看>>
分享20佳好玩的 jQuery 游戏
查看>>
【机器学习实战】kNN
查看>>
BZOJ 3386 Usaco Til the Cows come home
查看>>
Oracle表的常用查询实验(一)
查看>>
jeecms 2012 源码分析(2) 前台栏目页静态化分析
查看>>
达内TTS6.0课件oop_day04
查看>>
foreach属性-动态-mybatis中使用map类型参数,其中key为列名,value为列值
查看>>
java写入和写出EXCEL(含源代码)
查看>>
Centos学习笔记--linux用户管理
查看>>
本机操作Excel文件提示错误:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。...
查看>>
多线程之间通信
查看>>
RabbitMQ中RPC的实现及其通信机制
查看>>
spring中PropertyPlaceholderHelper替换占位符的值
查看>>
K8s容器资源限制
查看>>