博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
拦截导弹问题(动态规划)
阅读量:5972 次
发布时间:2019-06-19

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

poj 1887 Testing the CATCHER

题目链接:

dp[i]表示以v[i]结尾的数列

dp[i]=max(dp[k]+1) (v[k]>v[i])

本题要注意输出
//其实最长递减序列可以转换成最长上升序列//因为其下标是递增的 #include
#include
#define INF 10000using namespace std;const int maxn=INF;int n;int v[maxn];int MDS(){ int Max; int dp[maxn]; Max=0; for(int i=1;i<=n;i++) { dp[i]=1; //一开始要将dp[i]初始化为1 WTF!!!! for(int j=1;j
dp[i]&&v[j]>v[i]) dp[i]=dp[j]+1; if(dp[i]>Max) Max=dp[i]; } return Max;}int main (){ int a,c=1; while(cin>>a){ if(a==-1) break; n=1; memset(v,0,sizeof(v)); v[n++]=a; while(cin>>v[n]){ if(v[n]==-1){ n--; break; } n++; } cout<<"Test #"<
<<":\n"<<" maximum possible interceptions: "; cout<
<
<
View Code
 
HDU 1257 最少拦截系统

题目链接:

//问有最少有几个递减序列//实际上就是问最长上升序列中有多少个数(一直都不知道是怎么想到的)//最长上升序列状态转移方程:dp[i]=max(dp[k]+1),v[k]
#include
using namespace std;const int maxn=10000;int v[maxn],dp[maxn];int n;int MIS(){ int max=0; for(int i=1;i<=n;i++) { dp[i]=1; for(int k=1;k
v[k]&&dp[k]+1>dp[i]) dp[i]=dp[k]+1; if(dp[i]>max) max=dp[i]; } return max;}int main(){ while(cin>>n){ for(int i=1;i<=n;i++) cin>>v[i]; cout<
<
View Code

 

转载于:https://www.cnblogs.com/neverchanje/p/3548355.html

你可能感兴趣的文章
MVVM之View和ViewModel的关联
查看>>
此时无法停用连接。这个连接可能在用一个或多个不支持即插即用的协议,或者它是由其他用户或系统帐户初始化的。...
查看>>
Spring REST
查看>>
windows基本数据类型(部分)
查看>>
20、深入理解计算机系统笔记,虚拟存储器,基本原理(2)
查看>>
asp.net(C#) Excel导出类 导出.xls文件
查看>>
30个漂亮的蓝色风格网页设计作品欣赏
查看>>
PanGu词库批量添加关键词
查看>>
jquery插件 弹出层的效果实现代码
查看>>
对于.Net中C#指针的研究
查看>>
VC++学习(9):定制应用程序外观
查看>>
BAT CMD 批处理文件脚本总结(中文)
查看>>
如何通过使用64位版本 Windows 查看系统注册表
查看>>
50款精美的免费PSD网站模板下载(第五季)
查看>>
Firefox 4.0:我们2011年再见面吧
查看>>
3GPP2 协议下载网站
查看>>
图片二进制上传2
查看>>
c#编写高性能Tcp Socket应用注意事项
查看>>
wince PB 5.0下载,wince PB 5.0下镜像下载,wince PB 5.0下 img下载
查看>>
textbox+dropdownlist实现联想功能。类似百度,谷歌查询。。
查看>>