经典算法试题(二)
文章目录
- 一、岁数
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
- 二、打碎的鸡蛋
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
- 三、分糖
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
- 四、兔子产子
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
- 五、矩阵问题
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
- 六、谁是窃贼问题
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
- 七、娶公主
- 1、题目
- 2、思路讲解
- 3、代码实现
- 4、结果
一、岁数
1、题目
一位学生说“我的岁数的三次方是个四位数,四次方是个六位数。要组成我岁数的三次方和四次方,需要用遍0~9十个数字。”请问他多少岁?
2、思路讲解
从10开始遍历,先算出i的三次方和四次方,然后遍历求三次方,四次方的每一位,这里使用了^ 异或运算符,如果每位有相同的数字,b就会为0,就不符合条件,就终止循环。
3、代码实现

4、结果

二、打碎的鸡蛋
1、题目
某女士手里拎了一篮鸡蛋,从她身边奔跑而过一匹惊马,吓了她一跳,结果把篮里的鸡蛋,她说两个一数,三个一数,四个一数,五个一数时,余数分别为1,2,3和4。问篮里原有多少个鸡蛋?
2、思路讲解
解决这类问题的要点就是找到一个最大的数作为步长,以减少其循环次数,该例题的最大数为5,故应以5为步长,这里因为我们不知道鸡蛋的个位,所以不设置循环终止条件,终止由break来决定。
3、代码实现

4、结果

三、分糖
1、题目
新年晚会老师给大家分糖,手端着一盘糖,让第一个同学先拿1块糖,再把盘中的糖分1/7给他;然后让第二个同学拿2块糖,再把盘中的糖的1/7给他;第三个同学拿3块糖后,仍把盘中的糖的1/7给他。照这个办法分下去,最后一个同学自己拿完糖后,糖恰好分完,而且每个人分到的糖块数相同。问共有几人?每人分几块糖?
2、思路讲解
最后一个同学自己拿完糖后,糖恰好分完”以及前面的条件可知,最后一个同学所拿的糖的数量刚好等于人数。再根据其他条件可知,第i个同学所拿的糖的数量为所剩下糖的1/6加上i,并且每个同学所拿的糖的数量必为整数,
3、代码实现

4、结果

四、兔子产子
1、题目
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问一年内兔子总数是多少?第18个月的兔子数为多少?
2、思路讲解
第1个月与第2个月都只有一对兔子,第3个月它们产下一对小兔子,共有2对兔子;第4个月老兔子又产下一对小兔子,共有3对兔子;第5个月老兔子又产下一对小兔子,两个月前的小兔子也产下一对小兔子,共有5对兔子;依次类推,找出每个月兔子对数的规律。
每个月的兔子对数,1,1,2,3,5,8…… 可以看出 形如斐波那契数。
3、代码实现
递归解法

非递归解法

4、结果

五、矩阵问题
1、题目
输入一个数字n,得到一个n*n的矩阵,按如下规则给矩阵填入数字:
(1)如果n为奇数,将矩阵的上三角按顺时针方向填入递增的数据(如图1所示)。
(2)如果n为偶数,将矩阵的下三角按逆时针方向填入递增的数据(如图2所示)。
(建议输入的值在3-10之间)


2、思路讲解
定义存放矩阵数据的数组,首先确定第一圈(最外圈)的数据,并根据输入的数字n的奇偶性,将从1开始的递增的数据存放在相应的数组元素中,然后再确定第二圈的数组元素值,依次类推,直到填满题目要求的数组元素值(n为奇数填满上三角,n为偶数填满下三角)。
3、代码实现
int main()
{int n;scanf("%d", &n);int a[10][10] = { 0 };if (n % 2 == 0){int p = 1;for (int i = 0; i < n; i++){for (int j = 0; j <= i; j++){if (j == 0){a[i][j] = i + 1;}else if (i == n - 1){a[i][j] = i + j + 1;}else{a[i][j] = (2 * n - 1) + p;p++; }}}for (int i = 0; i < n; i++){for (int j = 0; j <= i; j++){printf("%-3d ", a[i][j]);}printf("\n");}}else{int p = 1;for (int i = 0; i < n; i++){for (int j = i; j < n; j++){if (i == 0){a[i][j] = j + 1;}else if (j == n - 1){a[i][j] = a[0][n - 1] + i;}else{a[i][j] = (2 * n - 1) + p;p++;}}}for (int i = 0; i < n; i++){for (int k = 1; k <= i; k++){printf(" ");}for (int j = i; j < n; j++){printf("%-3d ", a[i][j]);}printf("\n");}}return 0;
}
4、结果


六、谁是窃贼问题
1、题目
警察审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四个人中每人要么是诚实的,要么总是说谎。他们给警察的回答是:
甲说:“ 我没有偷。”
乙说:“ 甲没有偷,是丙偷的。”
丙说:“ 我没有偷,是丁偷的。”
丁说:” 丙没有偷,是乙偷的。”
请根据这四个人的回答判断谁是窃贼。
2、思路讲解
假设用A、B、C、D分别代表这四个人,变量的值为1代表该人是窃贼,则根据四个人的说法可列出4个条件。例如,根据乙说的话,可以列出条件:A+C=1。
3、代码实现

4、结果

七、娶公主
1、题目
若干求婚者排成一行,一二报数,报单数的退场。余下的人靠拢后再一二报数,报单数的退场,最后剩下的一位就可以娶公主为妻。若现在你站出来数一下,共有101人在你前面,你应站到哪一个位置才能娶到公主呢?
2、思路讲解
首先将1到103存在到数组中,然后循环,总数除以2,并且重复将双数存在到数组中,当循环终止的时候,剩下的那个数就是最好的位置。
3、代码实现

4、结果

相关文章:
经典算法试题(二)
文章目录 一、岁数1、题目2、思路讲解3、代码实现4、结果 二、打碎的鸡蛋1、题目2、思路讲解3、代码实现4、结果 三、分糖1、题目2、思路讲解3、代码实现4、结果 四、兔子产子1、题目2、思路讲解3、代码实现4、结果 五、矩阵问题1、题目2、思路讲解3、代码实现4、结果 六、谁是…...
Linux——生产者消费者模型
目录 一.为何要使用生产者消费者模型 二.生产者消费者模型优点 三.基于BlockingQueue的生产者消费者模型 1.BlockingQueue——阻塞队列 2.实现代码 四.POSIX信号量 五.基于环形队列的生产消费模型 一.为何要使用生产者消费者模型 生产者消费者模式就是通过一个容器来解决生…...
Oracle缓存表
Oracle缓存表(db_buffer_pool)由三部分组成: buffer_pool_defualt buffer_pool_keep buffer_pool_recycle 如果要把表钉死在内存中,也就是把表钉在keep区。相关的命令为: alter table 表名 storage(buffer_pool k…...
智能变电站自动化系统的应用与产品选型
摘要:现如今,智能变电站发展已经成为了电力系统发展过程中的内容,如何提高智能变电站的运行效率也成为电力系统发展的一个重要目标,为了能够更好地促进电力系统安全稳定运行,本文则就智能变电站自动化系统的实现进行了…...
reactnative 底部tab页面@react-navigation/bottom-tabs
使用react-navigation/native做的页面导航和tab‘ 官网:https://reactnavigation.org/docs/getting-started 效果图 安装 npm install react-navigation/nativenpm install react-navigation/bottom-tabs封装tabbar.js import { View, StyleSheet, Image } from …...
运维中心—监控大盘
一、监控大盘内容分类 1、告警 2、业务趋势 3、异常码 4、主机 5、服务状态 6、系统账单 二、API分类 【基础数据】 1、分组查询各自子系统 2、子系统查询名下各个微服务 【主机】 根据分组查询主机信息,按照子系统分组,按照CPU和内存排序 步骤…...
Node.js的安装
直接在浏览器中搜索Node.js即可 打开下载好的文件 验证是否安装成功 在cmd中输入 node -v,若结果为版本号那就是成功的 环境配置 配置全局模块所在的路径缓存cache的路径 在安装目录中新建两个文件夹,文件夹名为:node_cache和node_global 输…...
vsCode git 修改、清空、重置、保存账号名密码
1、保存账号名密码,之后拉取代码都不用重新输入: git config --global credential.helper store 2、查看git用户名: git config user.name 3、清空所有的用户名和密码: git config --system --unset credential.helper 4、清…...
Docker 安装oracle12c容器并创建新用户
Docker 安装oracle12c容器并创建新用户 下载镜像 docker pull truevoly/oracle-12c启动镜像 8080和22端口没有映射出来,有需要自己 docker run -d -p 8123:1521 -restartalways --privilegedtrue -v /data/docker/Oracle12c_sichuan:/u01/app/oracle/ --name oracle…...
LabVIEW中管理大型数据
LabVIEW中管理大数据 LabVIEW的最大优势之一是自动内存管理。这种内存管理允许用户轻松创建字符串、数组和集群,而无需C/C用户经常担心。但是,这种内存管理设计为绝对安全,因此数据被非常频繁地复制。这通常不会造成任何问题,但是…...
dirsearch网站目录暴力破解
介绍: dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具disearch的特点是: 支持HTTP代理多线程支持多种形式的网页(asp,php)生成报告࿰…...
【数据结构】线性表(三)循环链表的各种操作(创建、插入、查找、删除、修改、遍历打印、释放内存空间)
目录 线性表的定义及其基本操作(顺序表插入、删除、查找、修改) 四、线性表的链接存储结构 1. 单链表 2. 循环链表 a. 循环链表节点结构体 b. 创建新节点 c. 在循环链表末尾插入节点 d. 删除循环链表中指定值的节点 e. 在循环链表中查找指定值的…...
项目通用pom.xml文件模版
pom.xml模版文件 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…...
短视频矩阵系统源码---开发
一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统,目前是全国源头独立开发),开发功能大拆解分享,功能大拆解: 7大模型剪辑法(数学阶乘&#x…...
vue3点击表格某个单元格文本就切换成输入框,其他单元格不变化
<el-table :data"data.tableData" height"60vh" border scrollbar-aways-on><el-table-column label"序号" type"index" width"80" fixed /><el-table-column label"操作" width"120" f…...
持续集成部署-k8s-资源调度:HPA - Pod 基于负载指标自动水平扩容缩容
首先我们找一个 Deployment 配置文件: nginx-deploy.yaml apiVersion: apps/v1 # deployment api 版本 kind: Deployment # 资源类型为 deployment metadata: # 元信息labels: # 标签app: nginx-deploy # 具体的 key: value 配置形式name: nginx-deploy...
RemObjects Elements 12.0 Crack
Elements 是一个现代多功能软件开发工具链。 它支持六种流行的编程语言:Oxygene (Object Pascal)、C#、Java、Mercury (Visual Basic.NET™)、Go 和 Swift,适用于所有现代平台。 使用 Elements,您可以为您喜欢的任何平台进行编程- 无论是单…...
STM32标准外设库下载(下载地址与步骤详解)
文章目录 1. 概述2. 官方下载地址3. 步骤详解3.1 打开官网3.2 工具与软件 ➡ 嵌入式软件 ➡ MEMS软件3.3 微控制器软件 ➡ STM32微控制器软件 ➡ STM32标准外设软件库 ➡ 选择产品系列3.4 选择版本 ➡ 点击下载3.5 点击“接受” ➡ 填写邮箱信息 ➡ 点击“下载”3.6 点击接收到…...
【912.排序数组】
目录 一、题目描述二、算法原理2.1快速排序2.2归并排序 三、代码实现3.1快排代码实现3.2归并代码实现 一、题目描述 二、算法原理 2.1快速排序 2.2归并排序 三、代码实现 3.1快排代码实现 class Solution { public:int getRandom(int left,int right,vector<int>&…...
【动态规划】583. 两个字符串的删除操作、72. 编辑距离
提示:努力生活,开心、快乐的一天 文章目录 583. 两个字符串的删除操作💡解题思路🤔遇到的问题💻代码实现🎯题目总结 72. 编辑距离💡解题思路🤔遇到的问题💻代码实现&…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
给网站添加live2d看板娘
给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)
cd /home 进入home盘 安装虚拟环境: 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境: virtualenv myenv 3、激活虚拟环境(激活环境可以在当前环境下安装包) source myenv/bin/activate 此时,终端…...
