题解:
if(a[i]==0)
continue;
else
Max=a[i];
这一部分的作用是找到第一个未被击落的导弹(假设这个导弹叫小劣)。
for(j=i+1;j<=n;j++)
{
if(a[j]<=Max&&a[j]!=0)
{
Max=a[j];
a[j]=0;
}
}
然后击落小劣之后比它飞的低的导弹。
for(i=1;i<=n;i++)
if(a[i]==0)
continue;
else
Max=a[i];
通过外面的循环和continue隔过去小劣以及已经被击落的导弹,依次找到飞来的第二个2=未被击落的导弹。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i,j;
int a[100001];
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int k=0,Max;
for(i=1;i<=n;i++)
{
if(a[i]==0)
continue;
else
Max=a[i];
for(j=i+1;j<=n;j++)
{
if(a[j]<=Max&&a[j]!=0)
{
Max=a[j];
a[j]=0;
}
}
k++;
}
printf("%d\n",k);
}
return 0;
}