一、最长上升子序列问题

#include<iostream>
#include<algorithm>using namespace std;const int N=1010;int n;
int a[N],f[N];int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++){if(a[j]<a[i])f[i]=max(f[i],f[j]+1);}}int res=0;for(int i=1;i<=n;i++) res=max(res,f[i]);printf("%d\n",res);return 0;
}

二、怪盗基德的滑翔翼

#include<iostream>
#include<algorithm>using namespace std;const int N=110;int n;
int a[N],f[N];int main(){int T;scanf("%d",&T);while(T--){scanf("%d",&n);for(int i=1;i<n;i++) scanf("%d",&a[i]);//正向求解LIS问题int res=0;for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(a[i]>a[j])f[i]=max(f[i],f[j]+1);res = max(res,f[i]);} //反向求解LIS问题for(int i=n;i;i--){f[i]=1;for(int j=n;j>i;j--)if(a[i]>a[j])f[i]=max(f[i],f[j]+1);res = max(res,f[i]);} cout<<res<<endl;}
}

三、登山问题

#include<iostream>
#include<algorithm>using namespace std;const int N=1010;
int a[N];
int f[N],g[N];int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++){f[i]=1;for(int j=1;j<i;j++)if(a[i]>a[j])f[i]=max(f[i],f[j]+1);}for(int i=n;i;i--){g[i]=1;for(int j=n;j>i;j--)if(a[i]>a[j])g[i]=max(g[i],g[j]+1);}int res=0;for(int i=1;i<=n;i++) res=max(res,f[i]+g[i]-1);cout<<res<<endl;return 0;
}

四、友好城市

#include<iostream>
#include<algorithm>using namespace std;typedef pair<int,int> PII;const int N=5010;int n;
PII q[N];
int f[N];int main(){scanf("%d",&n);for(int i=0;i<n;i++) scanf("%d%d",&q[i].first,&q[i].second);sort(q,q+n);//对first从小到大排序,当first相同对second排序 int res=0;for(int i=0;i<n;i++){f[i]=1;for(int j=0;j<i;j++)if(q[i].second>q[j].second)f[i]=max(f[i],f[j]+1);res=max(res,f[i]);}cout<<res<<endl;return 0;
}

五、最大上升子序列和

#include<iostream>
#include<algorithm>using namespace std;const int N=1010;int n;
int f[N],a[N];int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++){f[i]=a[i];for(int j=1;j<=i;j++){if(a[i]>a[j])f[i]=max(f[i],f[j]+a[i]);}}int res=0;for(int i=1;i<=n;i++) res=max(res,f[i]);cout<<res<<endl;return 0;
}

六、拦截导弹

#include<iostream>
#include<algorithm>using namespace std;const int N=1010;int n;
int q[N];
int f[N],g[N];int main(){while(cin>>q[n]) n++;int res=0;for(int i=0;i<n;i++){f[i]=1;for(int j=0;j<i;j++)if(q[j]>q[i])f[i]=max(f[i],f[j]+1);res=max(res,f[i]);}cout<<res<<endl;int cnt=0;for(int i=0;i<n;i++){int k=0;while(k<cnt&&g[k]<q[i]) k++;g[k]=q[i];if(k>=cnt) cnt++;}cout<<cnt<<endl;return 0;
}

七、导弹防御系统

#include<iostream>
#include<algorithm>using namespace std;const int N=55;int n;
int q[N];
int up[N],down[N];
int ans;void dfs(int u,int su,int sd){if(su+sd>=ans) return;if(u==n){ans=su+sd;return;}//情况1:将当前数放到上升子序列中int k=0;while(k<su&&up[k]>=q[u]) k++;int t=up[k];up[k]=q[u];if(k<su) dfs(u+1,su,sd);else dfs(u+1,su+1,sd);up[k]=t;//情况2:将当前数放到下降子序列中k=0;while(k<sd&&down[k]<=q[u]) k++;t=down[k];down[k]=q[u];if(k<sd) dfs(u+1,su,sd);else dfs(u+1,su,sd+1);down[k]=t;
} int main(){while(cin>>n,n){for(int i=0;i<n;i++) cin>>q[i];ans=n;dfs(0,0,0);cout<<ans<<endl;}return 0;
}

八、最长公共上升子序列

#include<iostream>
#include<algorithm>using namespace std;int N;
int a[N],b[N];
int f[N][N];int main(){scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1;i<=n;i++) scanf("%d",&b[i]);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){f[i][j]=f[i-1][j];if(a[i]==b[i]){f[i][j]=max(f[i][j],1);for(int k=1;k<j;k++){if(b[k]<b[j])f[i][j]=max(f[i][j],f[i][k]+1);}}}
/*
//优化        for(int i=1;i<=n;i++){ int maxv=1; for(int j=1;j<=n;j++){f[i][j]=f[i-1][j];if(a[i]==b[i]) f[i][j]=max(f[i][j],maxv);if(b[j]<a[i]) maxv=max(maxv,f[i][j]+1);}}
*/int res=0;for(int i=1;i<=n;i++) res=max(res,f[n][i]);printf("%d\n",res);return 0;
}

y神动态规划第二课、第三课代码相关推荐

  1. 【Linux探索之旅】第二部分第三课:文件和文件夹,组织不会亏待你

    内容简单介绍 1.第二部分第三课:文件和文件夹,组织不会亏待你 2.第二部分第四课预告:文件操纵.鼓掌之中 文件和文件夹,组织不会亏待你 上一次课我们讲了命令行,这将成为伴随我们接下来整个Linux课 ...

  2. 商务汇报PPT制作的七堂课-第三课:结构搭建

    结构是我们PPT中最核心的部分,我们说ppt的缩写是PowerPoint,那意思是什么?是让观点更有力量,观点更有力量的前提是首先让别人能听得懂,那结构就是解决让别人听得懂的问题. 搭建好结构,你结合 ...

  3. y神动态规划第四课背包问题

    一.多重背包问题 #include<cstring> #include<iostream> #include<algorithm>using namespace s ...

  4. 昇腾CANN训练营-应用营第二期-第三课作业流程记录

    课程及作业地址:ascend_camp: CANN训练营第二期-应用营 (gitee.com) 一.基本作业 1.在上节课申请的镜像环境中,安装opencv-python,并进入python3,输入i ...

  5. 机器学习 第二节 第三课

    [toc] 绘制条形图 假设你知道了列表 a 中的电影分别在 9月14号, 9月15号, 9月16号三天的票房, 为了展示列表中电影本身的票房以及同其他电影的数据对比情况, 应该如何更加直观的呈现该数 ...

  6. ES6前端就业课第三课之class

    ES6.Class ​ 编程语言,都有关于类的定义和使用,java,C#,C++.使用class的关键字,js之前的版本,没有用.保留字,ES6启用了该关键字. 一.传统方法 通过构造函数定义,并生成 ...

  7. 【Linux探索之旅】第二部分第五课:用户和权限,有权就任性

    内容简单介绍 1.第二部分第五课:用户和权限,有权就任性 2.第二部分第六课预告:Nano,刚開始学习的人的文本编辑器 用户和权限.有权就任性 今天的标题也挺任性的啊,虽说小编是一个非常本分的人(真的 ...

  8. Linux 探索之旅 | 第二部分第六课:Nano 文本编辑器和终端配置

    -- 简书作者 谢恩铭 转载请注明出处 内容简介 第二部分第六课:Nano文本编辑器和终端配置 第二部分第七课预告:软件安装,如虎添翼 Nano,初学者的文本编辑器 上一课 Linux探索之旅 | 第 ...

  9. 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

最新文章

  1. php mysql 主从复制_Windows 环境下,MySQL 的主从复制和主主复制
  2. 一个线程池中的线程异常了,那么线程池会怎么处理这个线程?
  3. android h5使用缓存_程序员必须了解的之小程序 与 App 与 H5 之间的区别
  4. mysql四个对勾_Mysql like查询语句中,结果包含反斜杠 \ 字符的,需要替换成四个反斜杠 \\\\...
  5. 绘制E—R图(详细)
  6. 网站推广专员浅析网站排名越来越差大抵离不开这些网站推广重点
  7. iOS 开发 OpenGL 新手入门
  8. 关于这周工作中遇到的关于缓存问题的记录
  9. Python从入门到入土-Python3 File(文件) 方法
  10. 【REACT NATIVE 系列教程之十三】利用LISTVIEW与TEXTINPUT制作聊天/对话框获取组件实例常用的两种方式...
  11. 参加开发竞赛遇到的问题【总结】
  12. Hibernate中inverse属性与cascade属性
  13. 入门讲解:使用numpy实现简单的神经网络(BP算法)
  14. 【GitHub】用Bash编写的 Linux 资源监视器
  15. Spring beans配置方案(三) 学习笔记
  16. 学会python可以上天!20行代码获取斗鱼平台房间数据,就是这么牛逼!
  17. 关于window10修改默认浏览器闪退的情况
  18. uva11401:Triangle Counting 递推 数学
  19. 对于makefile不支持c++11的处理
  20. 建文高考成绩查询2021,建文外国语学校新书《高中阅读一卡通》出版

热门文章

  1. Jina 牵手百度 PaddlePaddle,打造端到端问答开发工具 RocketQA
  2. 转载自豆瓣,前端工程师成长路线
  3. FPGA–多功能密码锁 主控Xilinx-XC6SLX16 包含Veirlog源码和原理图
  4. 【神经网络】(5) 卷积神经网络(ResNet50),案例:艺术画作10分类,附数据集
  5. 我写了个IDEA开源插件,vo2dto 一键生成对象转换
  6. 2019年通用将生产新一代无人驾驶汽车:无方向盘和踏板 | 行业
  7. 英语学习-英语语法(名词)
  8. CUDA python 3.9 安装
  9. 印象深刻的一个人450作文_作文《印象深刻的一个人》450字
  10. 从github角度理解ssh