ACM(贪心系列)
来源:互联网 发布:怎么免费注册淘宝网店 编辑:程序博客网 时间:2024/06/13 10:11
描述
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允许先拦截后面的导弹,再拦截前面的导弹。
输入
输入有两行,
第一行,输入雷达捕捉到的敌国导弹的数量k(k<=25),
第二行,输入k个正整数,表示k枚导弹的高度,按来袭导弹的袭击时间顺序给出,以空格分隔。
输出
输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。
样例输入
8
300 207 155 300 299 170 158 65
样例输出
6
解决方案一(原创)
#include<stdio.h>
int a[1001],b[1001];int main()
{
int i, j, n, ans=0;
scanf("%d", &n);
for(i=0;i<n;i++)
scanf("%d", &a[i]);
b[0]=a[0];
ans=(n>0?1:0);
for(i=1;i<n;i++)
for(j=ans-1;j>=0;j--)
{
if(b[j]>=a[i])
{
b[(++j)]=a[i];
ans=(ans<j+1?j+1:ans);
break;
}
else if(j==0)
b[j]=a[i];
}
printf("%d\n", ans);
return 0;
}
解决方案二(转载)
#include<stdio.h>int h[1001],best[1001];int main(){int i, j, n, ans=0;scanf("%d", &n);for(i=1;i<=n;i++) scanf("%d", &h[i]); best[0]=99999; for(i=1;i<=n;i++) for(j=ans;j>=0;j--)if(best[j]>=h[i]){best[j+1]=h[i];ans=(ans<j+1?j+1:ans);break;} printf("%d\n", ans);return 0;}
0 0
- ACM(贪心系列)
- [ACM]今年暑假不AC(贪心)
- ACM——FatMouse' Trade(贪心)
- acm 1000 Moving Tables(贪心算法)
- ACM知识点 之 贪心(6)小结
- HDU6228(2017acm-沈阳) 树/贪心
- 贪心系列
- ACM--贪心算法
- ACM-贪心策略
- ACM 贪心算法
- HDU ACM 1050 贪心
- ACM贪心 HDOJ1050
- 1004贪心算法acm
- 1006-贪心算法acm
- acm 贪心总结
- ACM 贪心算法详解
- ACM 贪心 Highway
- ACM 贪心 Crossing River
- 算法笔记_071-SPFA算法简单介绍(Java)
- 自定义倒计时控件
- Binary Tree Level Order Traversal II问题及解法
- RecyclerView中解决item点击持久变色问题
- 深度学习开源框架选型准则和知名框架调研(一)
- ACM(贪心系列)
- 炫酷的水滴ViewPagerIndicator
- 169. Majority Element
- printf格式标志
- OrzOrzOrz
- Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
- Office 2016激活教程(附KMS激活软件)
- C++Primer第五版 第十七章习题答案
- TCP和UDP的最完整的区别