标签:style blog class c code java
某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于等于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统,因此有可能不能拦截所有的导弹。
2
8
389 207 155 300 299 170 158 65
3
88 34 65
6
2
思路:
求给出序列的最长单调递减子序列的长度。
AC代码:
1 //导弹拦截 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 using namespace std; 6 int num[22];//记录测试数据 7 int dp[22];//记录结果 8 int main() 9 { 10 int n; 11 scanf("%d",&n);//n组测试数据 12 while(n--) 13 { 14 int m; 15 scanf("%d",&m);//每组m个元素 16 memset(num,0,sizeof(num));//初始化 17 memset(dp,0,sizeof(dp)); 18 for(int i=1;i<=m;i++)//输入 19 { 20 scanf("%d",&num[i]); 21 } 22 23 for(int i=1;i<=m;i++)//自底向上进行填写以i为末尾的序列的单调递减子序列的最大长度 24 { 25 int ans=0; 26 for(int j=0;j<=i;j++) 27 { 28 if(num[i]<num[j]&&ans<dp[j]) 29 ans=dp[j]; 30 } 31 dp[i]=ans+1; 32 } 33 int ans=0;//求出最有值 34 for(int i=1;i<=m;i++) 35 { 36 if(ans<dp[i]) 37 ans=dp[i]; 38 } 39 printf("%d\n",ans); 40 } 41 42 return 0; 43 } 44
动态规划(4)———最长上升子序列(拦截导弹NYOJ79),布布扣,bubuko.com
标签:style blog class c code java
原文地址:http://www.cnblogs.com/xueniwawa/p/3734553.html