c++经典题——拦截导弹
题目来源:http://ybt.ssoier.cn:8088/problem_show.php?pid=1322
#include<iostream>
using namespace std;
int n[1001],m[1001];
int i,j,sum,n1=0,num=0;
int main()
{
while(cin>>n[++n1] && n[n1]);
m[++num]=n[1];
for(i=2;i<=n1;i++)
{
sum=0;
for(j=1;j<=num;j++)
{
if(m[j]>=n[i])
{
if(!sum)
sum=j;
else if(m[sum]>m[j])
sum=j;
}
}
if(!sum)
m[++num]=n[i];
else
m[sum]=n[i];
}
printf("%d",num);
return 0;
}
心得:这题做法多种多样,用动态规划或贪心算法都可以解出来