hdoj1257(方法2)

Problem : 1257 ( 最少拦截系统 )     Judge Status : Accepted
RunId : 2672168    Language : G++    Author : huwenbiao
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
/***************************************************************\
*Author:Hu Wenbiao
*Created Time: Sat 24 Jul 2010 09:08:02 AM CST
*File Name: main.cpp
*Description:将各个拦截系统的高度保存,如果新的导弹比正在运行的
*系统所能打到的高度都高,则另开一个系统,否则用比它高的系统中最
*低的那个来打它,更新那个系统的高度
\***************************************************************/

//*========================*Head File*========================*\\
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*----------------------*Global Variable*----------------------*/
int
sum,n,a,arr[
30000];
//*=======================*Main Program*=======================*//
using namespace std;
int
cmp(const void* a,const void* b){
return
(*(int*)a)-(*(int*)b);
}

int
main(){

//freopen("input","r",stdin);
while(scanf("%d",&n)!=EOF){
sum=
0;
while
(n--){
scanf(
"%d",&a);
qsort(arr,sum,sizeof(int),cmp);
//arr存放各系统的高度
int i;
for
(i=
0;i<sum;i++){
if
(arr[i]>a){
//用与a的差最小的来打它
arr[i]=a;
break
;
}
}

if
(i==sum){
//没有比a高度大的,另开一个系统
arr[sum]=a;
sum++;
}
}

printf(
"%d\n",sum);
}
}

你可能感兴趣的:(方法)