求《导弹拦截》标准C++解法

来源:百度知道 编辑:UC知道 时间:2024/04/28 13:46:18
我做了《导弹拦截》14天没做出来,求标准答案……求求
谁说不能飞 您好,您的答复题目是对的,我的测试已完毕。希望您的输入为标准逗号分隔格式。感谢您的回答。这是从vijos.cn上提取的原题:
某国为了防御敌国的导弹袭击,研发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试验阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

输入格式 Input Format
输入数据只有一行,该行包含若干个数据,之间用半角逗号隔开,表示导弹依次飞来的高度(导弹最多有 20 枚,其高度为不大于 30000 的正整数)。

输出格式 Output Format
输出数据只有一行,该行包含两个数据,之间用半角逗号隔开。第一个数据表示这套系统最多能拦截的导弹数;第二个数据表示若要拦截所有导弹至少要再添加多少套这样的系统。

-----------------------------------------

lihaosky123我说我就是不会算法转程序,简单的还行,给源程序please?

防御导弹Problem
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在使用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

Input
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)

Output
两个整数M和N。表示:这套系统最多能拦截 M 枚导弹,如果要拦截所有导弹最少要配备 N 套这种导弹系统。

Sample Input
300 250 275 252 200 138 245

Sample Output
5 2
#include <iostream>
using namespace std;
const short MAX = 20;
bool prove(short arr[]);
void solution(short arr[],short *a,short *b);//a为拦截数,b为需要设备数
int main(void)
{
short arr[MAX] = {0} , i = 0,a = 0,b = 0;
cout << "输入导弹高度:(输入0结束) " << endl;
do
{
cin >> arr[i];
i++;
}while(arr[i-1] != 0 && i<MAX);
solution(arr,&a,&b);
cout << "一套设备能够拦截的导弹数是: " << a << endl;
cout << "拦截全部导弹需要的设备数是: " <<