标签:one turn 它的 iostream 整数 open image color block
某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。
输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
输入格式:
一行,若干个正整数最多100个。
输出格式:
2行,每行一个整数,第一个数字表示这套系统最多能拦截多少导弹,第二个数字表示如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。
389 207 155 300 299 170 158 65
6 2
代碼實現:
1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 int dd[30],v[30],rj[30]; 5 int n,p,d,r; 6 int main(){ 7 while(cin>>dd[++n]) v[n]=1; 8 for(int i=1;i<n;i++) 9 for(int j=i+1;j<n;j++){ 10 if(dd[j]<dd[i]) v[j]=max(v[j],v[i]+1); 11 } 12 for(int i=1;i<=n;i++) 13 if(v[i]>p) p=v[i]; 14 for(int i=1;i<n;i++){ 15 d=50000; 16 for(int j=1;j<=r;j++) 17 if(rj[j]>dd[i]&&rj[j]<d){ 18 d=rj[j]; 19 rj[j]=dd[i]; 20 } 21 if(d==50000) {rj[++r]=dd[i];} 22 } 23 printf("%d\n%d",p,r); 24 return 0; 25 }
标签:one turn 它的 iostream 整数 open image color block
原文地址:http://www.cnblogs.com/J-william/p/6071644.html