算法训练 拦截导弹
2017-02-16 22:07
246 查看
问题描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入格式
一行,为导弹依次飞来的高度
输出格式
两行,分别是最多能拦截的导弹数与要拦截所有导弹最少要配备的系统数
样例输入
389 207 155 300 299 170 158 65
样例输出
6
2
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入格式
一行,为导弹依次飞来的高度
输出格式
两行,分别是最多能拦截的导弹数与要拦截所有导弹最少要配备的系统数
样例输入
389 207 155 300 299 170 158 65
样例输出
6
2
#include<stdio.h> #include<string.h> int count=0; void Change(char string[],int heigh[]) { int start=0,end=strlen(string); int i; for(i=0;i<50;i++) { heigh[i]=0; } while(start!=end) { if(string[start]!=' ') { heigh[count]=heigh[count]*10+(string[start]-'0'); } else if(string[start+1]!=' ') { count++; } start++; } } void Max(int heigh[]) { int temp[50]; int max=0,i,j; temp[0]=1; for(i=1;i<=count;i++) { temp[i]=1; for(j=0;j<i;j++) { if(heigh[i]<=heigh[j]) { temp[i]=temp[i]>temp[j]+1?temp[i]:temp[j]+1; } } if(max<temp[i]) { max=temp[i]; } } printf("%d\n",max); } void Num(int heigh[]) { int num[50]; int temp=1,i,j; num[0]=0; for(i=0;i<=count;i++) { for(j=0;j<temp;j++) { if(heigh[i]<=num[j]) { num[j]=heigh[i]; break; } } if(j==temp) { num[temp++]=heigh[i]; } } printf("%d\n",temp-1); } int main() { char string[1000]; int heigh[50]; gets(string); Change(string,heigh); Max(heigh); Num(heigh); return 0; }
相关文章推荐
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 算法训练 拦截导弹
- 蓝桥杯算法训练拦截导弹【最长上升子序列 & 最长非下降子序列nlogn 和 n^2】
- 蓝桥网 算法训练 拦截导弹
- 蓝桥杯 算法训练 拦截导弹
- 拦截导弹 蓝桥杯算法训练 Java
- 算法训练 拦截导弹
- java实现算法设计之导弹拦截
- 机试算法讲解:第50题 动态规划之拦截导弹
- BZOJ[2044]三维导弹拦截 匈牙利算法
- PKU暑期训练02.拦截导弹
- 《算法竞赛-训练指南》第一章-1.15_LA 3902
- 《算法竞赛-训练指南》第一章-1.19_UVa 11549
- 《算法竞赛-训练指南》第一章-1.19_UVa 11549
- 蓝桥杯 算法训练 校门外的树 (贪心线段排序)
- ACM-POJ 算法训练指南
- 算法训练 最小乘积(基本型)
- NYOJ 79 拦截导弹 (寻找递减最长子序列)