标签:依次 break 不能 ace problem int 系统 pre for
大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。突然有一天,雷达捕捉到敌国的导弹来袭。由于该系统存在缺陷,所以如果想把所有的导弹都拦截下来,就要多准备几套这样的导弹拦截系统。但是由于该系统成本太高,所以为了降低成本,请你计算一下最少需要多少套拦截系统。
8 389 207 155 300 299 170 158 65 5 265 156 123 76 26
2 1
1 /** 2 分析: 3 Ⅰ、我们需要把加入的防导弹系统的最高距离实时记录 4 Ⅱ、遍历该系统找出满足条件的防导弹系统并更新其最高距离 5 Ⅱ ( ②) 若所有防导弹没有符合条件的就要以刚输入的距离重新加入一个系统 6 7 核心代码: 8 for (i = 1; i < k; ++ i) { 9 if (A [i] >= num) { 10 A[i] = num; 11 break; 12 } 13 } 14 if (i == k) { 15 A[k ++] = num; 16 } 17 **/
C/C++代码实现(AC):
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 int n; 6 7 int main () { 8 while (~scanf ("%d", &n), n != -1) { 9 int A [3005], k = 1, i, num; 10 while (n --) { 11 scanf ("%d", &num); 12 for (i = 1; i < k; ++ i) { 13 if (A [i] >= num) { 14 A [i] = num; 15 break; 16 } 17 } 18 if (i == k) { 19 A [k ++] = num; 20 } 21 } 22 printf ("%d\n", k - 1); 23 } 24 }
标签:依次 break 不能 ace problem int 系统 pre for
原文地址:https://www.cnblogs.com/GetcharZp/p/8983034.html