防卫导弹问题
描述:
一種新型的防衛(wèi)導(dǎo)彈可截?fù)舳鄠€(gè)攻擊導(dǎo)彈。它可以向前飛行,也可以用很快的速度向下飛行,可以毫無損傷地截?fù)暨M(jìn)攻導(dǎo)彈,但不可以向后或向上飛行。但有一個(gè)缺點(diǎn),盡管它發(fā)射時(shí)可以達(dá)到任意高度,但它只能截?fù)舯人洗谓負(fù)魧?dǎo)彈時(shí)所處高度低或者高度相同的導(dǎo)彈。現(xiàn)對(duì)這種新型防衛(wèi)導(dǎo)彈進(jìn)行測(cè)試,在每一次測(cè)試中,發(fā)射一系列的測(cè)試導(dǎo)彈(這些導(dǎo)彈發(fā)射的間隔時(shí)間固定,飛行速度相同),該防衛(wèi)導(dǎo)彈所能獲得的信息包括各進(jìn)攻導(dǎo)彈的高度,以及它們發(fā)射次序。現(xiàn)要求編一程序,求在每次測(cè)試中,該防衛(wèi)導(dǎo)彈最多能截?fù)舻倪M(jìn)攻導(dǎo)彈數(shù)量,一個(gè)導(dǎo)彈能被截?fù)魬?yīng)滿足下列兩個(gè)條件之一:
a)它是該次測(cè)試中第一個(gè)被防衛(wèi)導(dǎo)彈截?fù)舻膶?dǎo)彈;
b)它是在上一次被截?fù)魧?dǎo)彈的發(fā)射后發(fā)射,且高度不大于上一次被截?fù)魧?dǎo)彈的高度的導(dǎo)彈。
輸入:
多個(gè)測(cè)例。
每個(gè)測(cè)例第一行是一個(gè)整數(shù)n(n不超過100),第二行n個(gè)整數(shù)表示導(dǎo)彈的高度(數(shù)字的順序即發(fā)射的順序)。
n=0表示輸入結(jié)束。
輸出:
每個(gè)測(cè)例在單獨(dú)的一行內(nèi)輸出截?fù)魧?dǎo)彈的最大數(shù)目。
輸入樣例:
5
5?6?100?6?61
0
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
using namespace std;
int num;
int sum;
int n;
int height[10][100]={0};
int qua[10][100]={0};
int judge[10]={0};
void peng();
int main()
{
int i;
int bug;
bug=1;
num=0;
while(bug==1)
{
scanf("%d",&n);
if(n==0)
{
bug=0;
}
else
{
scanf("\n");
for(i=0;i<n;i++)
{
scanf("%d",&height[num][i]);
qua[num][i]=0;
}
scanf("\n");
sum=0;
peng();
num=num+1;
}
}
for(i=0;i<num;i++)
{
printf("%d\n",judge[i]);
}
return 0;
}
void peng()
{
int i,j;
for(i=n-1;i>=0;i--)
{
for(j=i+1;j<n;j++)
{
if(height[num][i]>=height[num][j])
{
if(qua[num][i]<qua[num][j]+1)
{
qua[num][i]=qua[num][j]+1;
}
if(sum<qua[num][i])
{
sum=qua[num][i];
}
}
}
}
judge[num]=sum+1;
}
總結(jié)
- 上一篇: 超级爆笑的战争场面
- 下一篇: ES6中展开运算符的深拷贝浅拷贝理解(E