蓝桥杯刷题冲刺 | 倒计时13天
作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾
文章目录
- 1.母牛的故事
- 2.魔板
1.母牛的故事
-
题目
链接: [递归]母牛的故事 - C语言网 (dotcpp.com)
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入格式
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。输出格式
对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。样例输入
2 4 5 0样例输出
2 4 6 -
第一次 AC 50%
#include<bits/stdc++.h> using namespace std;int main() {int n;while(cin>>n){int sum=0;if(n==0)return 0;for(int i=1;i<=n;i++){if(i<=4)sum+=1;else sum+=i-3;}cout<<sum<<endl;}return 0; }枚举了前几个数,找的规律是错的
-
第二次 AC 50% + 超时 50%
#include<bits/stdc++.h> using namespace std;int f(int n) {if(n<=4)return n;return f(n-2)+f(n-3)+f(n-4); }int main() {int n;while(scanf("%d",&n)){if(n==0)return 0;cout<<f(n)<<endl;}return 0; }递归+规律,第二次递归的规律又找错了
-
第三次 AC 50% + 50% 超时
#include<bits/stdc++.h> using namespace std;int f(int n) {if(n<4)return n;return f(n-1)+f(n-3); }int main() {int n;while(scanf("%d",&n)&&n) //记住这个,当输入0时,跳出循环{cout<<f(n)<<endl;}return 0; }这次 规律对,但还是 超时
-
第四次 AC 100%
#include<bits/stdc++.h> using namespace std;int main() {int n;while(scanf("%d",&n)&&n){int a[60];a[1]=1,a[2]=2,a[3]=3;for(int i=4;i<=n;i++) //使用数组递归{a[i]=a[i-1]+a[i-3];}cout<<a[n]<<endl;}return 0; } -
反思
找规律的题:
不要局限在前后相邻的数,不要只找一组,就直接把规律定下来,多找几组
找规律题中+递归,一开始根本没有往这方面想
How
- 找规律,发散思维,很有可能有递归,看看前后几个数之间的关系
- 递归函数,可能会超时,考试的时候,就直接使用 数组来代替函数
2.魔板
-
题目
链接: 魔板 - C语言网 (dotcpp.com)
在魔方风靡全球之后不久,Rubik先生发明了它的简化版――魔板。魔板 由8个同样大小的方块组成,每个方块颜色均不相同,可用数字1-8分别表示。任一时刻魔板的状态可用方块的颜色序列表示:从魔板的左上角开始,按顺时针方 向依次写下各方块的颜色代号,所得到的数字序列即可表示此时魔板的状态。例如,序列(1,2,3,4,5,6,7,8)表示魔板状态为:
1 2 3 4
8 7 6 5
对于魔板,可施加三种不同的操作,具体操作方法如下:
A: 上下两行互换,如上图可变换为状态87654321
B: 每行同时循环右移一格,如上图可变换为41236785
C: 中间4个方块顺时针旋转一格,如上图可变换为17245368
给你魔板的初始状态与目标状态,请给出由初态到目态变换数最少的变换步骤,若有多种变换方案则取字典序最小的那种。输入格式
每组测试数据包括两行,分别代表魔板的初态与目态。
输出格式
对每组测试数据输出满足题意的变换步骤。
样例输入
12345678 17245368 12345678 82754631样例输出
C AC -
第一次 AC 0%
#include<bits/stdc++.h> using namespace std;const int N=1010; int d[N];string FA(string a) {string b=a;a[0]=b[4],a[1]=b[5],a[2]=b[6],a[3]=b[7];a[4]=b[0],a[5]=b[1],a[6]=b[2],a[7]=b[3];return a; }string FB(string a) {string b=a;a[0]=b[3],a[1]=b[0],a[2]=b[1],a[3]=b[2],a[4]=b[6];a[5]=b[5],a[6]=b[4],a[7]=b[7];return a; }string FC(string a) {string b=a;a[0]=b[0],a[1]=b[5],a[2]=b[1],a[3]=b[3];a[4]=b[4],a[5]=b[6],a[6]=b[2],a[7]=b[7];return a; } void bfs(string st,string over) {queue<string> q;q.push(st);unordered_map<string,string> mp;while(q.size()){auto now=q.front();q.pop();if(now==over){cout<<mp[now]<<endl;return ;}string ss;for(int i=1;i<=3;i++){switch(i){case 1:ss=FA(now);if(!mp.count(ss)){q.push(ss);mp[ss]=mp[now]+'A';}break;case 2:ss=FB(now);if(!mp.count(ss)){q.push(ss);mp[ss]=mp[now]+'B';}break;case 3:ss=FB(now);if(!mp.count(ss)){q.push(ss);mp[ss]=mp[now]+'C';}break;}}}}int main() {string a,b;while(cin>>a>>b){bfs(a,b);}return 0; }一开始,框架都写出来,但是输出 转换的路径写不出来,忘记咋写了
好像是倒推,前几天写过,题解中的是用的 STL 里面的 map
哪里出错了,还没有看出来,他没有输出
-
题解
#include<bits/stdc++.h> using namespace std; // 定义两个变量s和f,代表起点状态和终点状态,其值由输入读入 string s, f; // 操作A函数,将输入状态x按照操作A的规则进行变换 string A(string x) {string s = x;for (int i = 0; i < 4; i++) {swap(s[i], x[7 - i]);swap(s[i + 4], x[3 - i]);}return s; } // 操作B函数,将输入状态x按照操作B的规则进行变换 string B(string x) {string s = x;s[0] = x[3], s[1] = x[0];s[2] = x[1], s[3] = x[2];s[4] = x[5], s[5] = x[6];s[6] = x[7], s[7] = x[4];return s; } // 操作C函数,将输入状态x按照操作C的规则进行变换 string C(string x) {string s = x;s[1] = x[6], s[2] = x[1];s[5] = x[2], s[6] = x[5];return s; } // 广搜函数,使用map进行去重,记录操作序列 void bfs() {unordered_map<string, string>mp; // 哈希表,用于存储操作序列queue<string>q; // 队列,用于存储待搜索状态q.push(s); // 将初始状态入队while (!q.empty()) { // 只要队列不为空,就继续搜索string now = q.front(); // 取出队首元素q.pop(); // 将队首元素出队if (now == f) { // 当达到终点状态,输出操作序列cout << mp[now] << endl;return; // 搜索结束}string ts; // 操作后的状态// 按照题目要求,A、B、C操作依次搜索,保证字典序最小for (int i = 0; i < 3; i++) { // 依次搜索ABC操作,保证字典序最小switch (i) {case 0: // A操作ts = A(now); // 对当前状态进行A操作if (!mp.count(ts)) { // 如果操作后的状态不在哈希表中q.push(ts); // 将操作后的状态入队mp[ts] = mp[now] + 'A'; // 更新哈希表,存储操作序列}break;case 1: // B操作ts = B(now); // 对当前状态进行B操作if (!mp.count(ts)) { // 如果操作后的状态不在哈希表中q.push(ts); // 将操作后的状态入队mp[ts] = mp[now] + 'B';// 更新哈希表,存储操作序列}break;case 2://C操作ts = C(now); // 对当前状态进行B操作if (!mp.count(ts)) { // 如果操作后的状态不在哈希表中q.push(ts); // 将操作后的状态入队mp[ts] = mp[now] + 'C';// 更新哈希表,存储操作序列}break;}}} } int main() {while (cin >> s >> f) {bfs();}return 0; } -
反思
通过三种不同的转化状态+最少变化步骤,我们可以确定是 BFS
对于我来说,这个题的难点不在于确定最少的步数是多少,而是输出路径
-
学到了使用 switch 执行不同的函数,我差点就使用函数数组了TvT
-
借助了 map 去重+输出路径,学到了
之前我以为路径都必须倒推,很麻烦,map 真的好用
我们再研究一下,路径的记录,再刷一两道题这个类型的题
-

相关文章:
蓝桥杯刷题冲刺 | 倒计时13天
作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 文章目录1.母牛的故事2.魔板1.母牛的故事 题目 链接: [递归]母牛的故事 - C语言网 (dotcpp.c…...
MIPI D-PHYv2.5笔记(5) -- 不同的PHY配置方式
声明:作者是做嵌入式软件开发的,并非专业的硬件设计人员,笔记内容根据自己的经验和对协议的理解输出,肯定存在有些理解和翻译不到位的地方,有疑问请参考原始规范看 规范5.7章节列举了一些常见的PHY配置,但实…...
【周末闲谈】文心一言,模仿还是超越?
个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言?(_)?三、文心一言的优势?😗😗😗四、文心一…...
《一“企”谈》 | 「佛山市政」:携手企企通,让采购业务数智化
近日,国家施工总承包壹级企业「佛山市市政建设工程有限公司」(以下简称“佛山市政”)正积极布局数字化建设工作,基于采购业务数智化,携手企企通打造了SaaS采购云平台。 01、岭南建筑强企 匠心铸造精品 …...
Spark运行架构
目录 1 运行架构 2 核心组件 2.1 Driver 2.2 Executor 2.3 Master & Worker 2.4 ApplicationMaster 3 核心概念 3.1 Executor 与 Core 3.2 并行度( Parallelism) 3.3 有向无环图( DAG) 4 提交流程 …...
基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别
目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活,为节能减排,减少电能…...
Spring Boot 框架总结
Spring Boot 框架总结 1. springboot的引言 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的 初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不 再需要定义样板化的配置。通过这种方式࿰…...
【数据结构】第五站:带头双向循环链表
目录 一、链表的八种结构 二、带头双向循环链表的实现 1.链表的定义 2.链表的接口定义 3.接口的具体实现 三、带头双向循环链表的完整代码 四、顺序表和链表的区别 一、链表的八种结构 我们已经知道链表可以有以下三种分法 而这三种结构又可以排列组合,形成八…...
Springboot生成二维码
Springboot生成二维码整合 我们使用两种方式,去生成二维码,但是其实,二维码的生成基础,都是zxing包,这是Google开源的一个包,第一种是使用原始的zxing方式去实现,第二种是使用hutool来实现&…...
“独裁者”何小鹏,再造小鹏汽车
文丨智能相对论 作者丨沈浪 如果没有何小鹏,小鹏汽车将失去灵魂。 2014年,夏珩、何涛等人在广州组建小鹏汽车(当时还叫“橙子汽车”),何小鹏还只是股权投资人。 夏珩、何涛原任职于广汽,负责新能源汽车…...
数据结构 | 泛型 | 擦除机制| 泛型的上界
目录 编辑 1.泛型 1.1Object类引出泛型概念 2.泛型语法 2.1泛型编写代码 3.泛型的机制 3.1擦除机制 4.泛型的上界 4.1泛型上界的语法 4.2泛型上界的使用 5.泛型方法 5.1泛型方法语法 5.2泛型方法的使用 1.泛型 一般的类和方法中,只能使用具体的代码…...
C++拷贝构造函数(复制构造函数)详解
拷贝和复制是一个意思,对应的英文单词都是copy。对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷…...
python学习——多线程
python学习——多线程概念python中线程的开发线程的启动线程的退出和传参threading的属性和方法threading实例的属性和方法多线程daemon线程和non-demone线程daemon线程的应用场景线程的jointhreading.local类线程的延迟执行:Timer线程同步Event 事件Lock ——锁加锁…...
SAP 系统中过账码or记账码
SAP中过账码和记账码是指同一个事物。 在实际业务中,记账码就是只有“借”和“贷”, 而SAP中Posting Code肩负着更多的任务: 1)界定科目类型, 2)借贷方向, 3)凭证输入时画面上的字…...
【FreeRTOS(一)】FreeRTOS新手入门——初识FreeRTOS
初识FreeRTOS一、实时操作系统概述1、概念2、RTOS的必要性3、RTOS与裸机的区别4、FreeRTOS的特点二、FreeRTOS的架构三、FreeRTOS的代码架构一、实时操作系统概述 1、概念 RTOS:根据各个任务的要求,进行资源(包括存储器、外设等)…...
Python中 __init__的通俗解释是什么?
__init__是Python中的一个特殊方法,用于在创建对象时初始化对象的属性。通俗来讲,它就像是一个构造函数,当我们创建一个类的实例时,__init__方法会被自动调用,用于初始化对象的属性。 举个例子,如果我们定义…...
网友真实面试总结出的自动化测试面试题库
目录 常规问题 手工测试部 自动化测试 自动化测试面试题2:selenium篇 常规问题 1、如何快速深入的了解移动互联网领域的应用 (答案:看http协议 restful api知识 json加1分) 2、对xx应用自己会花多久可以在业务上从入门到精通&…...
2023 年最佳 C++ IDE
文章目录前言1. Visual Studio2. Code::Blocks3. CLion4. Eclipse CDT(C/C 开发工具)5. CodeLite6. Apache NetBeans7. Qt Creator8. Dev C9. C Builder10. Xcode11. GNAT Programming Studio12. Kite总结前言 要跟踪极佳 IDE(集成开发环境&…...
在Ubuntu上使用VSCode编译MySQL Connector/C连接库
首先下载并解压MySQL Connector/C源码,然后执行以下步骤: 1、安装MySQL Connector/C依赖:在终端中输入以下命令来安装MySQL Connector/C的依赖项: sudo apt-get install build-essential cmake 2、下载并解压MySQL Connector/C源…...
单声道数字音频放大器AD87589
AD87589是一种集成音频系统解决方案,嵌入数字音频处理、功率级放大器和立体声2Vrms线路驱动器。 AD87589具有可编程转换速率控制的输出缓冲器,可直接驱动一个(单声道)或两个(立体声)扬声器。此外࿰…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
