牛客网经典题型的讲解

简介: 牛客网经典题型的讲解

首先我们来看第一道题目:小乐乐上电梯

拿到该题目时,首先我们脑袋中就应该有大概的思路:一种是直接上去电梯不需要等待,另一种是需要等待一次或者几次才能上去的情况。因此我们脑袋中要构建大概的框架

第一步,我们先对题目中所运用到的值进行定义:

 
    int n = 0;//前面有n个人;
    int up = 2;//上楼的时间进行定义;
    int down = 2;//下楼所需的时间进行定义;
    int time = 0;//对总的时间进行初始化;

第二步就是我们前面所提到的俩种情况我们分别依次列举出来:

 if (n / 12 == 0)//因为有俩种情况我们可以直接用if来进行判断
    {//判断第一种情况下我们不用等电梯,也就是说电梯的人小于12个人,因此我们只用花费上楼的时间;
        time = time + 2;
    }
    else if (n / 12 != 0)//来到第二种情况下我们需要判断前面有n个人并且此时n>12
    {
        time = (n / 12) * (down + up) + up;//此时我们n/12判断前面有几波人,因n是整型因此只会得到商,此时得到结果是在你之前有几波人,但是到你的时候你还需要一个上去的过程,因此要加上一个上去的时间up
    }

因此我们知道,该题无非就是俩种情况直接上去需要2分钟,和等待电梯的人数大于12时,判断出n/12所得到的商就是前面电梯要上下来回的次数,但此时你并没有上去因此我们需要加上我们上去的时间:up

第三步就是把我们的思路合并成总代码,代码如下:

int main()
{
    int n = 0;
    int up = 2;//上楼的时间进行定义;
    int down = 2;//下楼所需的时间进行定义;
    int time = 0;//对总的时间进行初始化;
    scanf("%d", &n);
    //拿到该题目脑袋中首先要有想到有俩种情况,第一种是不用等直接上去,第二种是等了几波人然后才能上去;
    if (n / 12 == 0)//因为有俩种情况我们可以直接用if来进行判断
    {//判断第一种情况下我们不用等电梯,也就是说电梯的人小于12个人,因此我们只用花费上楼的时间;
        time = time + 2;
    }
    else if (n / 12 != 0)//来到第二种情况下我们需要判断前面有n个人并且此时n>12
    {
        time = (n / 12) * (down + up) + up;//此时我们n/12判断前面有几波人,因n是整型因此只会得到商,此时得到结果是在你之前有几波人,但是到你的时候你还需要一个上去的过程,因此要加上一个上去的时间up
    }
    printf("%d", time);
    return 0;
}

第二道题目:逆序输出

拿到该题目时首先我们也应当在脑袋中或者动手去构建大致的框架去帮助我们思考,因此看到该题目逆序输出时我们应该想到如下思路:

可是这时候问题就来了,到最后arr[5]并没有一个值可以让他赋值,这时候我们就应该想到引入第三个值把arr数组中的每一个值给他储存起来,思路如下:

 

len = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < 10; i++)
  {
    tmp[i] = arr[len - i - 1];
    printf("%d ", tmp[i]);
  }

此时大家又会有个以为为什么Len要减去一个1,这时我们应该想到该数组由十个数组成其长度为10,但在arr中第一个数下标为0,最后一个数下标为9故而我们减去一个让他从最后一个数开始赋值.

那么整体的思路有了,我们的代码块如下:

int main()
{
  int arr[10] = { 0 };
  int i = 0;
  int tmp[10] = { 0 };
  int len = 0;
  len = sizeof(arr) / sizeof(arr[0]);
  for (i = 0; i < 10; i++)
  {
    scanf("%d", &arr[i]);
  }
  for (i = 0; i < 10; i++)
  {
    tmp[i] = arr[len - i - 1];
    printf("%d ", tmp[i]);
  }
}


相关文章
|
人工智能 自然语言处理 Linux
进程(process) vs 线程(Thread)
本文主要介绍了进程和线程的基本概念、区别以及操作系统如何调度线程的方式。同时,还介绍了线程锁的核心原理和实现方式。在多线程编程中,理解进程和线程的概念以及线程锁的使用,对于保证程序的安全性和性能非常重要。
258 0
|
弹性计算 虚拟化 异构计算
2023阿里云GPU服务器租用费用说明:包年包月、小时收费、学生GPU服务器租用费用
阿里云GPU服务器租用价格表包括包年包月价格、一个小时收费以及学生GPU服务器租用费用,阿里云GPU计算卡包括NVIDIA V100计算卡、T4计算卡、A10计算卡和A100计算卡,GPU云服务器gn6i可享受3折优惠,分享阿里云GPU服务器租用价格表、GPU一个小时多少钱以及学生GPU服务器收费价格表:
3712 0
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
472 1
|
10月前
|
搜索推荐 数据库 UED
CRM系统源码|客户管理系统源码开发
CRM系统通过提供个性化的用户体验、提高生产力、改善客户体验和增加销售额来助力企业成长。集成CRM能自动化数据输入,减少管理时间,提高销售代表的效率。此外,CRM还能增强客户互动,降低跳出率,增加透明度,确保整个公司的协调合作。
301 5
|
10月前
|
前端开发 API
【Azure 环境】从Azure AD(Entra ID)中获取的Token在访问自定义的接口应用时验证不通过
集成Azure AD(新名称Microsoft Entra ID),拿到对应的accessToken作为登录用的凭证。这个 AccessToken 能够正常返回,并作为Microsoft Graph userinfo API的Authorization,因为应用中会对前端传递过来的 AccessToken进行校验合法性。但目前遇见的问题时这个 Token 签名校验失败。 “'IDX10503: Signature validation failed. Keys tried: 'Microsoft.IdentityModel.Tokens.X509SecurityKey , KeyId: xxx
120 0
【Azure 环境】从Azure AD(Entra ID)中获取的Token在访问自定义的接口应用时验证不通过
|
JavaScript
深入理解汇编中的ZF、OF、SF标志位和条件跳转
深入理解汇编中的ZF、OF、SF标志位和条件跳转
1066 0
|
存储 Linux 程序员
tar命令详解:linux文件打包神器
tar命令详解:linux文件打包神器
|
消息中间件 运维 Kubernetes
工作中用Go: Go中异步任务怎么写
工作中用Go: Go中异步任务怎么写
3532 0
工作中用Go: Go中异步任务怎么写
|
算法 Linux C语言
Linux驱动IO篇——异步IO
Linux驱动IO篇——异步IO
|
C++
C++分文件编写:拆类(.h和.cpp文件)
C++分文件编写:拆类(.h和.cpp文件)
311 0