动态规划——导弹问题
来源:互联网 发布:python源码剖析笔记 编辑:程序博客网 时间:2024/06/05 16:53
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:
虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,
雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
using namespace std;
int main()
{
int i,j,n,num;
int hight[1000],count[1000];
while(cin>>n&&n)
{
num=0;
for(i=0; i<n; i++)
{
cin>>hight[i];
count[i]=1;
}
for(i=1; i<n; i++)
for(j=0; j<i; j++)
{
if(hight[j]>=hight[i]&&count[j]+1>count[i])
{
count[i]=count[j]+1;
}
if(count[i]>num)
{
num=count[i];
}
}
cout<<num<<endl;
}
return 0;
}
虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,
雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.
1.请帮助计算一下最少需要多少套拦截系统.
问题分析
定义两个数组,一组用来存放各组导弹的飞行高度,另一组用来做标记所需拦截系统数目
假设共有8枚导弹,高度依次为389 207 155 300 299 170 158 65 用数组hight[x]来存放,
假设击落的最后一枚导弹是hight[1],因为hight[0]<hight[1],用一套设备即可,当击落的最后一枚导弹是
hight[3]时,hight[3]>hight[1]>hight[2];所以需要2套设备依次类推,求出所需设备数。
#include <iostream>using namespace std;int main(){ int i,j,n,num; int hight[1000],count[1000]; while(cin>>n&&n) { num=0; for(i=0; i<n; i++) { cin>>hight[i]; count[i]=1; } for(i=1; i<n; i++) for(j=0; j<i; j++) { if(hight[j]<=hight[i]&&count[j]+1>count[i]) { count[i]=count[j]+1; } if(count[i]>num) { num=count[i]; } } cout<<num<<endl; } return 0;}2.若只有一套系统最多拦截几枚导弹
问题分析
定义两个数组,一组用来存放各组导弹的飞行高度,另一组用来做标记
假设共有8枚导弹,高度依次为389 207 155 300 299 170 158 65 用数组hight[x]来存放,
假设击落的最后一枚导弹是hight[1],因为hight[0]>hight[1],所以则共击落2枚导弹,
用count[1]来标记共击落的导弹数;依次类推令击落的最后一枚导弹是hight[2—7],通过比较count[0-7]找出击落导弹最多是多少
using namespace std;
int main()
{
int i,j,n,num;
int hight[1000],count[1000];
while(cin>>n&&n)
{
num=0;
for(i=0; i<n; i++)
{
cin>>hight[i];
count[i]=1;
}
for(i=1; i<n; i++)
for(j=0; j<i; j++)
{
if(hight[j]>=hight[i]&&count[j]+1>count[i])
{
count[i]=count[j]+1;
}
if(count[i]>num)
{
num=count[i];
}
}
cout<<num<<endl;
}
return 0;
}
- 动态规划——导弹问题
- 动态规划——防卫导弹
- 乱搞+动态规划——导弹拦截
- 导弹防御问题 动态规划 java
- 动态规划中的导弹拦截问题
- 动态规划之——拦截导弹(nyoj79)
- 动态规划-导弹拦截
- 导弹拦截 动态规划
- 【动态规划】拦截导弹
- 动态规划 拦截导弹
- 动态规划 - 拦截导弹
- 动态规划--防御导弹
- 导弹拦截-动态规划
- 导弹拦截---动态规划
- 拦截导弹(动态规划)
- 导弹拦截 动态规划
- 动态规划的一个入门问题:导弹防御
- 【动态规划】NOIP1999 拦截导弹
- 操作系统--Linux常用命令(1)
- Linux 内存 buffer 和 cache 的区别
- 链表list<>中sort()和unique()的用法
- Android中窗口的创建过程
- C#中线程的学习
- 动态规划——导弹问题
- 取代哦ubuntu的菜单栏
- 深入浅出CChart 每日一课——快乐高四第二课 富丽堂皇,没落贵族宝贵遗产之QT篇
- socket编程基础
- poj 1789 Truck History (最小生成树)
- IOS中获取各种文件的目录路径的方法
- Linux TCP多进程并发服务器
- CSS实现限制页面显示字数,超出部份显示点点点.
- hia记得么