1322拦截导弹问题

题目

原题链接icon-default.png?t=M666http://ybt.ssoier.cn:8088/problem_show.php?pid=1260

1322拦截导弹问题_第1张图片

 审题

首先不要有这样的错误理解:只要后面都比第一个数字小就行了。有一个迷惑样例如下:

输入:100 200 80 70 90

输出:2

 错误理解:第一套系统拦截除200外所有的导弹,第二套系统拦截高度为200的那颗导弹。

正确理解:第一次拦截100、80、70,第二次拦截200、90。因为90比前面的70大,所以第一次无法拦截90。

另外注意到输入时没有给你n,也就是说你不知道要输入多少个数,所以我们要用循环来判断是否输入完了。

思路

首先用循环判断是否输入完了。

int a[1001],t[1001],i=0,k=0;
while(cin>>a[i]){
    i++;
}

然后进行拦截。代码如下:

t[0]=a[0]; 
for(int j=1;j=a[j]&&t[l]

然后就可以输出了。

cout<

完整代码

#include
using namespace std;
int main(){
	int a[1001],t[1001],i=0,k=0;
    while(cin>>a[i]){
    	i++;
	}
	t[0]=a[0]; 
	for(int j=1;j=a[j]&&t[l]

新手上路,请多多指教。

你可能感兴趣的:(c++,贪心算法,算法)