某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入
第一行为导弹的个数
第二行为使用逗号分隔的导弹依次飞来的高度(雷达给出的高度数据是不大于30000 的正整数)
输出
这套系统最多能拦截多少导弹
这很简单啦
[CODE]#include <stdio.h>
int count(int* pArray,int n, int base)
{
int i;
int iCount = 0;
for (i = 0; i < n; i ++)
{
if(base >= pArray[i])
{
iCount ++;
}
}
return iCount;
}
int main(void)
{
int i, iCount;
int * pArray = NULL;
char szHeightArray[128];
char szHeight[16];
char * sztemp;
int iMax, iMaxCount, itemp;;
printf("Please enter the number of the missile:");
if (scanf("%d",&iCount) != 1)
{
printf("Error number\n");
return -1;
}
printf("Please enter the Height of the missile:");
if (scanf("%s", szHeightArray) != 1)
{
printf("Error input\n");
return -1;
}
pArray = malloc(iCount * sizeof(int));
if (NULL == pArray)
{
printf("alloc memery failed\n");
return -1;
}
sztemp = szHeightArray;
for(i = 0; i < iCount; i ++)
{
if (sscanf(sztemp, "%d,", &pArray[i]) != 1)
{
printf("Error input\n");
free(pArray);
return -1;
}
while(*sztemp != ',')
{
sztemp ++;
}
sztemp ++;
}
iMax = pArray[0];
iMaxCount = count(pArray + 1, iCount - 1, iMax);
for (i = 1; i < iCount; i ++)
{
if (pArray[i] < iMax)
{
continue;
}
itemp = count(&pArray[i], iCount - i, pArray[i]);
if (itemp > iMaxCount)
{
iMax = pArray[i];
iMaxCount = itemp;
}
}
printf("This machine can hold up %d missles\n", iMaxCount);
free(pArray);
system("pause");
return 0;
}[/CODE]