解题思路:

很简单,但是可以对代码进行多次优化。

首先,常规读入高度和身高,这个没什么可优化的。

接下来分两步,一个是比较,一个是计算。

常规做法基本上是 if(height[i] <= H + 30)s++;

但是,对于部分要卡常的题目来说,可能会爆掉,而且每次都调用寄存器来计算 H+30,很显然是一种浪费。

首先我们可以像多数题解那样,在读入 H 之后,直接对它进行 +=30的操作。

但是实际上,比较的行为也可以简化。

if(height[i] <= H )s++; 电脑计算的时候分为三步:

计算 height[i] <= H 的值 (true | false)

调用if判断里面表达式的值是否为真

若真,对s进行s+=1的运算。

我们简化时可以发现,s每次加的值都是恒定的 1 。

联想到 : true == 1 , false == 0 , 我们可以直接将逻辑值的结果加给s。

也即 s+=!(H<height[i]);

CPP代码如下

#include<iostream>
#include<cmath>
using namespace std;
int a[15];
int main()
{
    int b,B,A;
       for(int i=1;i<=10;i++)
               cin>>a[i];
           cin>>b;
           B=b+30;
          int c=0;
           for(int i=1;i<=10;i++)
               {
                 if(a[i]<=B)  
                  c++ ;
                }
         cout<<c;
   return 0;
}

点赞(63)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论