题目描述
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截 系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试 用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入
最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)
输出
整数M。表示:这套系统最多能拦截 M 枚导弹.
样例输入
300 250 275 252 200 138 245
样例输出
5
师父的神奇代码,之所以说它神奇,是因为调试不了,输不出结果,偏偏提交了就AC了,郁闷-ing
1 #include <stdio.h> 2 #include <string.h> 3 #include<math.h> 4 #define max(a,b) (a>b?a:b) 5 6 int main() 7 { 8 int n=0,w=-1,i,j; 9 int dp[100],a[100]; 10 11 while(scanf("%d", &a[n++])!=EOF); 12 n--; 13 memset(dp,0,sizeof(dp)); 14 15 for(i=0;i<n;i++) 16 { 17 for(j=0;j<i;j++) 18 if(a[j]>=a[i]) 19 dp[i]=max(dp[i],dp[j]+1); 20 w=max(w,dp[i]); 21 } 22 printf("%d\n", w+1); 23 return 0; 24 }