动态规划—14怪盗基德的滑翔翼
来源:互联网 发布:淘宝微任务是什么 编辑:程序博客网 时间:2024/06/04 18:53
题目:有N栋建筑,每栋建筑高度不同,只能从高建筑滑向低建筑,求最多可以经过多少建筑。
解题思路:定义两个数组,利用i循环,用两个数组存从i向两边的最大上升子序列和最大下降子序列,循环一遍之后用sort函数将两个数组排序然后比较c[n-1]和d[n-1]的大小,大的那个即是要求的结果。
细节处理:用两个数组分别存最大上升子序列和最大下降子序列。
代码:#include<bits/stdc++.h>
using namespace std;
int main()
{
int i,j,m,n,a[1001]={0},max;
cin>>m;
while(m--)
{
int c[1001]={0},d[1001]={0};
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
c[n-1]=1;
for(i=n-2;i>=0;i--)
{
for(max=0,j=n-1;j>i;j--)
{if((a[j]<a[i])&&(c[j]>max))
max=c[j];
}
c[j]=max+1;}
d[0]=1;
for(i=1;i<n;i++)
{
for(max=0,j=0;j<i;j++)
{if(a[j]<a[i]&&d[j]>max)
max=d[j];}
d[i]=max+1;}
sort(c,c+n);
sort(d,d+n);
if(c[n-1]>d[n-1])
cout<<c[n-1]<<endl;
else
cout<<d[n-1]<<endl;}
return 0;
}
感想:解决问题时可以换一种思路解决,例如本题就是求最大上升子序列和最大下降子序列中最大的那个。
0 0
- 动态规划练习一—14怪盗基德的滑翔翼
- 动态规划—14怪盗基德的滑翔翼
- 动态规划--怪盗基德的滑翔翼
- 动态规划 怪盗基德的滑翔翼
- 动态规划―怪盗基德的滑翔翼
- 动态规划:怪盗基德的滑翔翼
- 动态规划练习一 14:怪盗基德的滑翔翼
- 动态规划练习一 14:怪盗基德的滑翔翼
- 动态规划练习题-14(怪盗基德的滑翔翼)
- ACM-动态规划14-怪盗基德的滑翔翼
- 动态规划练习14:怪盗基德的滑翔翼
- 动态规划练习--14(怪盗基德的滑翔翼)
- 动态规划练习——怪盗基德的滑翔翼
- C++动态规划算法之怪盗基德的滑翔翼
- C++动态规划之怪盗基德的滑翔翼(openjudge)
- 14:怪盗基德的滑翔翼
- 14:怪盗基德的滑翔翼
- 14:怪盗基德的滑翔翼
- 注册用户校验register.jsp
- VMware安装CentOS时,无法以图形界面安装解决办法
- JavaScript的变量
- 每日三题-Day3-B(HDU 1260 Tickets 基础DP)
- 用jmeter通过ssl验证访问https
- 动态规划—14怪盗基德的滑翔翼
- CentOS下Zabbix安装部署及汉化
- NGINX引入线程池 性能提升9倍
- windows charles response 乱码解决办法
- GridView 如何取消排序
- 使用visualvm远程监控JVM LINUX服务器配置方法
- 无法打开预编译头文件:“x64\Unicode_Release\DYEBrowserCtrlHelper.pch”
- charles工具抓包教程(http跟https)
- Selenium的PO模式(Page Object Model)[python版]