初阶牛之牛客网刷题集(1)

news2025/7/15 21:01:11

前言

记录一下牛牛自己在牛客网上刷到的一些题目.分享一下牛牛的解题思路,希望可以帮到大家.

目录

  • 前言
  • 1.母牛的故事
    • 解题思路:
    • 代码实现:
  • 2.替换空格
    • 解题思路:
    • 代码实现
  • 3.二进制中1的个数
    • 解题思路
    • 代码实现
  • 结语

1.母牛的故事

题目链接:传送门

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

输入描述:
输入数据由多个测试实例组成,每个测试实例占一行,
包括一个整数n(0<n<55),n的含义如题目中描述。
输出描述:
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

解题思路:

因为前四年都是由一头成年牛生产小牛牛,所以前四年的数量分别是
{1,2,3,4,},从第5年开始则不同,因为第2年生产的小牛牛已经长大了,也可以生产了。
我们以第五年为例:
第5年牛牛数量=原来牛的数量+新增牛的数量

原来牛的数量:指上一年的数量,即第四年牛牛的数量。
新增牛的数量第五年有哪些牛出生就是新增牛的数量,显然此时第2年牛的数量就为新增牛的数量,因为到第五年的时候第2年所有的牛都是成年牛了,所以都可以生小牛。

第n年牛牛的数量为=原来牛的数量(n-1年)+新增牛的数量(n-3年)

重点:很多小伙伴还是不理解为什么是n-3年
因为

第一年: n-3题目看仔细哦,小牛是年初出生的,所以到n-3年结束,这里也是一年哦。
第二年 :n-2
第三年 :n-1
第四年 : n(年初生产了)

代码实现:

#include <stdio.h>
#define N 55
int main()
{
	//定义一个一维数组,用于存放每一年牛的数量
	int a[N] = {0,1,2,3,4}int i = 0, n = 0;
	while (scanf("%d", &n) != EOF)//用于多组输入
	{
		for (i = 5; i <= n; i++)//从第五年开始,有小牛出生
		{
			//去年牛的数量+新出生的小牛的数量
			a[i] = a[i - 1] + a[i- 3];
		}
		printf("%d\n", a[n]);//输出这一年牛的数量
	}
	return 0;
}

最后:如有不了解多组输入的小伙伴。
请参照:scanf(“%d”, &n) != EOF,

2.替换空格

题目链接:传送门
描述:
请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

数据范围:1000 \0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

示例1
输入:
"We Are Happy"
复制
返回值:
"We%20Are%20Happy"
复制
示例2
输入:
" "
复制
返回值:
"%20"

解题思路:

  1. 首先,我们观察到返回值是一串字符,所以我们可以创建一个足够大的数组来存储返回字符串.
  2. 其次题目要求是将目标字符串中的“空格”替换为“%20”,这里特别注意的是“%20“是三个字符(‘%’,‘2’,‘0’组成).所以我们不能直接将"空格"赋值为”%20”.
    3.我们遍历目标字符数组(字符串)时,遇到空格,就将空格和空格后的两个字符都占据,这样就可以有三个字符空间来分别存储’%’ ‘2’ ‘0’.
    4.最后将返回值字符串返回即可.

代码实现

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @return string字符串
 */
char* replaceSpace(char* s ) {
    // write code here
    char ret[10000]={0};//创建一个用于存放返回字符串的数组
    int i=0;
   for(i=0;*s!='\0';i++)
    {
         
        if(*s==' ')//如果遇到空格,就用三个字符来存储%20
        {
           ret[i]='%';
           ret[i+1]='2';
           ret[i+2]='0';
           i=i+2;
        }
        else{
            ret[i]=*s;//不是空格则直接存储
        }
        s++;
    }
    return ret;
}

3.二进制中1的个数

题目链接:传送门
题目描述:
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。
数据范围:- 2^{31} <= n <= 2^{31}-1−2
即范围为:-2147483648<= n <= 2147483647−2147483648<=n<=2147483647

示例1
输入:
10
复制
返回值:
2
复制
说明:
十进制中10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010
,其中有两个1。       
示例2
输入:
-1
复制
返回值:
32
复制
说明:
负数使用补码表示 ,-1的32位二进制表示为
1111 1111 1111 1111 1111 1111 1111 1111,其中32个1    

解题思路

方法1:
当一个数n&1的时候,我们就可以得到n这个数的最低位.是否为1,为1则会返回1,反之返回0.
例如:

我们可以用">>"(逻辑右移操作符)每次移动一位后&1,判断最后一位是否为1.

方法2:
这个方法很巧妙,其实当我们用n&n-1的时候,每次都会减少二进制中的一个1.直到n为0;
例如:53
第一次相&

第二次相&

第三次相&

第四次相&

代码实现

//方法1
int NumberOf1(int n ) {
int count=0,i=0;
    for (i = 0; i < 32; i++)
	{
		if (1 == ((n >> i) & 1))//每次移动i个位置
		{
			count++;
		}
	}
	return count;
}
//方法2
int NumberOf1(int n ) {
    int count = 0;
	while (n)
	{
		n&=(n - 1);
		count++;
	}
	return count;
}

结语

希望牛牛可以坚持刷题,锻炼自己的思维能力,和各位小伙伴们逐渐成长,共同进步,早日成为大牛.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

43期《深入浅出Pytorch》课程 - Task01:PyTorch的安装和基础知识+前置知识打卡

Task011、Pytorch安装2、基础知识2.1 张量(Tensor)2.2 自动求导2.3 梯度2.4 并行计算3、前置知识打卡1、Pytorch安装 由于之前使用过Pytorch&#xff0c;所以说不需要再重新下载&#xff0c;直接开始后续的基础知识 2、基础知识 由于之前学习过numpy系列&#xff0c;所以说…

用专业团队管理软件工具轻松“拿捏”年轻运营团队

本文旨在抛砖引玉&#xff0c;欢迎大家拍砖讨论&#xff0c;通过一款时下流行的专业团队管理软件飞项做案例&#xff0c;一起探讨和交流团队管理专业工具软件和一些对应的方法论。 说到国内这几年流行起来的团队管理工具软件&#xff0c;我们先看看互联网这几年的发展。这几年&…

网络舆情监测是干嘛的?

近年来&#xff0c;有赖于移动网络技术的发展和社会化媒体概念的崛起&#xff0c;讯息的传播与扩散速度得到了空前的提高&#xff0c;而对于民营企业来说同样带来了不少的挑战&#xff0c;接下来TOOM舆情监测系统小编带您简单介绍网络舆情监测是干什么的? 一、什么是网络舆情监…

用户画像系列——布隆过滤器在策略引擎中的应用

在用户画像系列——当我们聊用户画像&#xff0c;我们在聊什么&#xff1f; 介绍了用户画像的应用场景: (1)个性化推荐 通过用户标签给用户推荐合适的商品或者内容 (2)营销圈选 参考&#xff1a;用户画像系列——Lookalike在营销圈选扩量中的应用 (3)策略引擎 根据用户标…

HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

重磅推出!CrownCAD 2023全功能试用通道已开启!

CrownCAD 2023已于10月28日正式发布&#xff0c;为了更好地提升设计效率&#xff0c;不仅增强已有功能的智能性、标准性、应用性&#xff0c;更是在产品定义、属性、仿真、数据管理等方面再度突破&#xff0c;更加贴合中国制造需求。 CrownCAD 2023全功能试用通道已开启 为让…

如何在Win10上安装docker

[版权申明] 非商业目的注明出处可自由转载 出自&#xff1a;shusheng007 前言 没有了Mac Pro&#xff0c;我又捡起了我的Windows…&#xff0c;这是我给她安装docker的的记录&#xff0c;你愿意也可以瞅一眼 检查win10版本 我们的安装基于WSL2&#xff08;Windows subsystem…

【深入理解Kotlin协程】lifecycleScope源码追踪扒皮

lifecycleScope是LifecycleOwner的扩展属性&#xff0c;而 ComponentActivity 和 Fragment&#xff08;androidx&#xff09;都实现了 LifecycleOwner 接口&#xff0c;所以这就是为什么说lifecycleScope的作用范围是只能在Activity、Fragment中使用。public val LifecycleOwne…

vue-element-admin动态菜单(后台获取)

vue-element-admin动态菜单&#xff08;后台获取&#xff09;&#xff0c;此教程面向纯小白攻略&#xff0c;不要嫌我啰嗦&#xff0c;翻到自己需要的地方即可 前提 vue-element-admin官网&#xff1a; vue-element-admin (gitee.io) vue-element-admin页面展示&#xff1a;…

Spring Boot框架下实现Excel服务端导入导出

Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。今天我们就使用纯前对按表格控件带大家了解&#xff0c;如何在Spring…

高精度算法【加减乘除】

全文目录&#x1f60d; 前言&#x1f600; 高精度加法&#x1f914; 操作步骤&#x1f635;‍&#x1f4ab; 代码模板&#x1f600;高精度减法&#x1f914;操作步骤&#x1f635;‍&#x1f4ab; 代码模板&#x1f600;高精度乘法&#x1f914;操作步骤&#x1f635;‍&#x…

[R]第二节 对象介绍与赋值运算

前言 R 创建、控制的实体(entity)称为对象(object)。向量(vector)矩阵(matrix)数组(array)数据框(data frame)列表(list)因子(factor)函数(function)通过以上实体定义的更为一般性的结构(structures) 数据的存储形式 R语言进行数据存储选择一种合适的数据结构将已有的数据输入…

【Python实战】海量表情包炫酷来袭,快来pick斗图新姿势吧~(超好玩儿)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 你有在聊天中遇到不知道该如何表达&#xff0c;如何回复的情况吗&#xff1f; 或许&#xff0c;使…

FastDFS学习(四)

目录&#xff1a; &#xff08;1&#xff09;FastDFS搭建集群的环境准备 &#xff08;2&#xff09;FastDFS集群搭建负载均衡环境-使用Nginx进行负载均衡 &#xff08;1&#xff09;FastDFS搭建集群的环境准备 架构图 如果你公司刚好用这个&#xff0c;那你就会搭建集群涉及…

python基于PHP+MySQL的个人博客系统毕设

随着时代和网络的发展,人们越来越希望通过多种模式来展示自己。于是个人博客就出现了,它可以更好的让人们来记录自己的工作和学习方式。博客不仅仅可以让自己抒发个人感情,还可以展示自己真实的生活,从而建立起一种友好的交友平台。 PHP个人博客系统毕设系统分为前台和后台两部…

第2-3-3章 文件处理策略-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

文章目录5.2 文件处理策略5.2.1 FileStrategy5.2.2 AbstractFileStrategy5.2.3 LocalServiceImpl5.2.4 FastDfsServiceImpl5.2.5 AliServiceImpl5.2.6 MinioServiceImpl5.2 文件处理策略 在开发fastDFS和minio实现类之前&#xff0c;需要提前安装部署好fastDFS和minio。搭建教程…

LIS.LCS.LCIS相关问题

文章目录P1020 [NOIP1999 普及组] 导弹拦截P1439 【模板】最长公共子序列P1637 三元上升子序列272. 最长公共上升子序列LCISP1020 [NOIP1999 普及组] 导弹拦截 P1020 [NOIP1999 普及组] 导弹拦截 导弹拦截应该是接触DP的第一题&#xff08;只不过洛谷上的数据加强了&#xff…

Windows平台 使用jarsigner对Apk签名

使用的是JDK自带的jarsigner工具来完成Apk签名 1) 首先找到你的Java Jdk中bin的路径&#xff1a;C:\Program Files\Java\jdk1.8.0_152\bin jarsigner简单使用说明 #jarsigner的命令格式&#xff1a; jarsigner -verbose -keystore [您的私钥存放路径] -signedjar [签名后文件存…

使用高数值孔径透镜进行脉冲聚焦

摘要 尽管对于大多数其他类型的光源而言&#xff0c;静态近似下是足够精确的&#xff0c;但对于超短脉冲来说需要更加精确的方法&#xff0c;其中要考虑到不同光谱模式之间的相关性。在此&#xff0c;我们在空间、时间与场分布上研究了该脉冲传播通过高数值孔径透镜的影响。 建…

基于matlab和Simulink的不同阶QAM调制解调系统误码率对比仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB预览 4.完整MATLAB程序 1.算法概述 正交振幅调制是利用已调信号在相同带宽内的频谱正交来实现两路并行的数据信息传输&#xff0c;其信道频带利用率与单边带调制一样&#xff0c;主要用于高速数据传输系统中。QAM系统组成框图如…