简单C程序题目 拦截导弹问题某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,...
题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截 系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。...某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试 用阶段,所以只有一套系统,因
intn; inth[1005];//记录导弹高度 ints[1005];//记录每个系统当前可拦截最高高度 intmain() { while(cin>>h[n]) n++; intcnt=1;//记录系统数 s[cnt]=h[0];//初始化,把第一个导弹高度录入第一个系统 for(inti=1;i<n;i++)//遍历导弹 { intp=0;//初始化!!! for(intj=1;j<=cnt;j++...
最主要的问题是,对于每个导弹的高度不能用逐个比较,否则你的程序没法正确处理300,150,250,100,125这种输入 300,150可以用系统一拦截,250,100可以用系统二拦截,对于125,虽然不能用系统二拦截了,但可以用系统一拦截 按你的算法就会增加一套系统。我想的算法是(如果你不会用链表的话)设置一个数组...
1. 直接说了,最多能拦截的导弹的高度是不能超过上一次的高度,所以容易能想到最多能拦截的导弹数量就是所给序列的最长不上升子序列长度(并不是最长下降子序列)。而要拦截所有导弹需要的系统数目就是所给序列的最长上升子序列的长度(也就是把最长上升子序列中每一个数字分到不同的组里面即可),另外需要注意这个必...
{ int a[50],flag[50],max,i,j;int num ;scanf("%d",&num);for(i=0;i<num;i++){ scanf("%d",&a[i]);flag[i] = 1;}/*输入数据*/ for(i=0;i<num;i++){ for(j=0;j=a[i]){ flag[i]= flag[j]+1>flag[i]? flag[j]+1:flag[i];} } } max=flag[0];for...
输出最多能拦截的导弹数目,每组输出只有一行,包含一个整数,表示最多能拦截多少枚导弹。 样例输入 2 8 389 207 155 300 299 170 158 65 3 88 34 65 样例输出 6 2 思路:简单的动态规划 判定 当前满足要求可拦截的导弹数 则遍历 前面 比自身高的 导弹 dp[i] 表示 第i个导弹 前面满足要求可拦截的导弹数...
求解C语言 导弹拦..一种新型的防卫导弹可截击多个攻击导弹。它可以向前飞行,也可以用很快的速度向下飞行,可以毫无损伤地截击进攻导弹,但不可以向后或向上飞行。但有一个缺点,尽管它发射时可以达到任意高度,但它只能截击比它上次截
某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。
某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,由于该系……