蓝桥杯专题-真题版含答案-【加法变乘法】【三羊献瑞】【交换瓶子】【卡片换位】

  • 点击跳转专栏=>Unity3D特效百例
  • 点击跳转专栏=>案例项目实战源码
  • 点击跳转专栏=>游戏脚本-辅助自动化
  • 点击跳转专栏=>Android控件全解手册
  • 点击跳转专栏=>Scratch编程案例
  • 点击跳转=>软考全系列
  • 点击跳转=>蓝桥系列

👉关于作者

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
有什么需要欢迎底部卡片私我,获取更多支持,交流让学习不再孤单

芝麻粒儿-空名先生

👉实践过程

需要所有整理的文档可底部卡片联系我,直接发压缩包。

😜加法变乘法

我们都知道:1+2+3+ … + 49 = 1225
现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015

比如:
1+2+3+…+1011+12+…+2728+29+…+49 = 2015
就是符合要求的答案。

请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。

#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {for (int i = 1; i <=46 ; ++i) {for (int j = i+2; j <=48 ; ++j) {if(i*(i+1)-(i+i+1)+j*(j+1)-(j+j+1)==2015-1225)cout<<i<<" "<<j<<endl;}}return 0;
}

😜三羊献瑞

观察下面的加法算式:

  祥 瑞 生 辉
  • 三 羊 献 瑞

三 羊 生 瑞 气

(如果有对齐问题,可以参看【图1.jpg】)

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。

请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。

#include <iostream>
#include <sstream>
#include <string>
using namespace std;
void i2s(int num, string &str) {stringstream ss;ss << num;ss >> str;
}int main(int argc, const char * argv[]) {for (int b = 2; b < 9; ++b) {for (int d = 2; d < 9; ++d) {if(b==d)continue;for (int g = 2; g < 9; ++g) {if(g==b||g==d)continue;int c=b+1;if(c==b||c==d||c==g)continue;if(c+g<=10)continue;
/*a b c d+   e f g b
-------------------e f c b ie=1,a=9,f=0,c=b+1,c+g>10*/int sum = 9000 + b * 100 + c * 10 + d + 1000 + g * 10 + b;for (int i = 2; i < 9; ++i) {if(i==b||i==d||i==g||i==c)continue;if(sum<=(10000+c*100+b*10+i)&&sum>=(10000+c*100+b*10+i)) {printf("%2d%d%d%d\n", 9, b, c, d);printf("%2d%d%d%d\n", 1, 0, g, b);printf("%d\n", sum);printf("---------\n");}}}}}return 0;
}

😜交换瓶子

有N个瓶子,编号 1 ~ N,放在架子上。

比如有5个瓶子:
2 1 3 5 4

要求每次拿起2个瓶子,交换它们的位置。
经过若干次后,使得瓶子的序号为:
1 2 3 4 5

对于这么简单的情况,显然,至少需要交换2次就可以复位。

如果瓶子更多呢?你可以通过编程来解决。

输入格式为两行:
第一行: 一个正整数N(N<10000), 表示瓶子的数目
第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。

输出数据为一行一个正整数,表示至少交换多少次,才能完成排序。

例如,输入:
5
3 1 2 5 4

程序应该输出:
3

再例如,输入:
5
5 4 3 2 1

程序应该输出:
2

#include <iostream>using namespace std;
int n;
int a[10001];
int ans;int pos(int x) {for (int i = 1; i <= n; ++i) {if (a[i] == x)return i;}return -1;
}void swap(int i, int j) {int t = a[i];a[i] = a[j];a[j] = t;
}void printArr() {for (int i = 1; i <= n; ++i) {printf("%d ", a[i]);}printf("\n");
}int main(int argc, const char *argv[]) {
// 处理输入scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%d", &a[i]);}
//遍历i:1-Nfor (int i = 1; i <= n; ++i) {
//如果a[i]=i,已经到位if (a[i] == i)continue;
//否则先找到i在a中的位置pos(i)和i位交换——swap(a,pos(i),i)else {swap(pos(i), i);ans++;}}//    printArr();printf("%d\n", ans);return 0;
}

😜卡片换位

你玩过华容道的游戏吗?
这是个类似的,但更简单的游戏。
看下面 3 x 2 的格子

+---+---+---+
| A | * | * |
+---+---+---+
| B |   | * |
+---+---+---+

在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵。
还有一个格子是空着的。

你可以把一张牌移动到相邻的空格中去(对角不算相邻)。
游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。

输入格式:
输入两行6个字符表示当前的局面

输出格式:
一个整数,表示最少多少步,才能把AB换位(其它牌位置随意)

例如,输入:

  • A
    **B

程序应该输出:
17

再例如,输入:
A B


程序应该输出:
12

#include <stdio.h>
#include <iostream>
#include <queue>
#include <set>using namespace std;char *start;
int posA, posB;
pair<int,int>posO;struct cmp {bool operator()(char *a, char *b) {return strcmp(a, b) < 0;}
};
set<char *, cmp> allState;struct StateAndLevel {char *state;int level;pair<int,int> pos;StateAndLevel(char *_state, int _level, pair<int,int> _pos) : state(_state), level(_level), pos(_pos) {}
};
queue<StateAndLevel> q;bool check(char *state) {//posA的位置是B,posB的位置是Areturn (state[posA] == 'B' && state[posB] == 'A');
}void swap(char *s, int i, int j) {char t = s[i];s[i] = s[j];s[j] = t;
}void bfs() {
//    将初始状态加入队列q.push(StateAndLevel(start, 0, posO));allState.insert(start);while (!q.empty()) {StateAndLevel &front = q.front();
//弹出队首,将队首和目标状态比较,如果相同,结束,注意压入队列的数据应该记录了层次char *state = front.state;int le = front.level;pair<int,int> x = front.pos;//空格的位置int i=x.first;int j=x.second;if (check(state)) {printf("%d\n", le);break;}
//将队首的邻居加入队列,重复上一步,注意:重复状态不要加入if (i - 1 >= 0) {char *new_state = (char *) malloc(6 * sizeof(char));//新建字符串strcpy(new_state, state);//拷贝,准备将空格和周边进行交换,得到下一个状态swap(new_state, i*3+j, (i - 1)*3+j);
//            查重if (allState.find(new_state) == allState.end()) {
//            将新状态加入队列,且加入到set中避免后续重复生成状态allState.insert(new_state);q.push(StateAndLevel(new_state, le + 1, make_pair(i - 1,j)));}}if (i + 1 <= 1) {char *new_state = (char *) malloc(6 * sizeof(char));//新建字符串strcpy(new_state, state);//拷贝,准备将空格和周边进行交换,得到下一个状态swap(new_state, i*3+j, (i + 1)*3+j);
//            查重if (allState.find(new_state) == allState.end()) {
//            将新状态加入队列,且加入到set中避免后续重复生成状态allState.insert(new_state);q.push(StateAndLevel(new_state, le + 1, make_pair(i + 1,j)));}}if (j - 1 >= 0) {char *new_state = (char *) malloc(6 * sizeof(char));//新建字符串strcpy(new_state, state);//拷贝,准备将空格和周边进行交换,得到下一个状态swap(new_state, i*3+j, i *3+j-1);
//            查重if (allState.find(new_state) == allState.end()) {
//            将新状态加入队列,且加入到set中避免后续重复生成状态allState.insert(new_state);q.push(StateAndLevel(new_state, le + 1, make_pair(i ,j-1)));}}if (j + 1 <= 2) {char *new_state = (char *) malloc(6 * sizeof(char));//新建字符串strcpy(new_state, state);//拷贝,准备将空格和周边进行交换,得到下一个状态swap(new_state, i*3+j, i *3+j+1);
//            查重if (allState.find(new_state) == allState.end()) {
//            将新状态加入队列,且加入到set中避免后续重复生成状态allState.insert(new_state);q.push(StateAndLevel(new_state, le + 1,make_pair(i,j+1)));}}q.pop();}
}int main(int argc, const char *argv[]) {start = (char *) malloc(6 * sizeof(char));
// 处理输入,得到起始字符串(长度为6)
//标记出A的位置和B的位置int index = 0;for (int i = 0; i < 2; ++i) {for (int j = 0; j < 3; ++j) {start[index] = getchar();if (start[index] == 'A')posA = i * 3 + j;if (start[index] == 'B')posB = i * 3 + j;if (start[index] == ' '){start[index] = '_';posO = make_pair(i,j);}index++;}getchar();}
//    cout << start << endl;
//宽搜bfs();return 0;
}

👉其他

📢作者:小空和小芝中的小空
📢转载说明-务必注明来源:https://zhima.blog.csdn.net/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

温馨提示点击下方卡片获取更多意想不到的资源。
空名先生

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

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

相关文章

Sharding-JDBC强制路由案例实战

&#x1f680; ShardingSphere &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&…

【NLP】图解变压器(transformer)

一、说明 在这篇文章中&#xff0c;我们将看看 The Transformer——一个利用注意力来提高这些模型训练速度的模型。转换器在特定任务中优于谷歌神经机器翻译模型。然而&#xff0c;最大的好处来自变压器如何适应并行化。事实上&#xff0c;谷歌云建议使用The Transformer作为参…

1 第一个vue程序

复习次数 &#xff1a;✔ 1.1 vue优势 1.2 vue环境 直接在idea的插件搜vue.js&#xff0c;然后下载。 接着创建一个空项目&#xff0c;并添加模块。然后&#xff0c;创建一个html文件。 1.3 vue例子 完整的html代码如下&#xff1a; <!DOCTYPE html> <html lang&qu…

【VUE】npm打包报错 Syntax Error: Error: Cannot find module ‘imagemin-gifsicle‘

一. Syntax Error: Error: Cannot find module ‘imagemin-gifsicle’ npm run build 报错&#xff0c;报错如下 原因 这个错误消息显示缺少了 imagemin-gifsicle 模块&#xff0c;而它是 image-webpack-loader 的依赖项&#xff0c;导致构建失败。解决 &#xff08;1&#xf…

MyBatis学习笔记之缓存

文章目录 一级缓存一级缓存失效 二级缓存二级缓存失效二级缓存相关配置 MyBatis集成EhCache 缓存&#xff1a;cache 缓存的作用&#xff1a;通过减少IO的方式&#xff0c;来提高程序的执行效率 mybatis的缓存&#xff1a;将select语句的查询结果放到缓存&#xff08;内存&…

睡眠健康数据分析

项目背景 背景描述 本数据集涵盖了与睡眠和日常习惯有关的诸多变量。如性别、年龄、职业、睡眠时间、睡眠质量、身体活动水平、压力水平、BMI类别、血压、心率、每日步数、以及是否有睡眠障碍等细节。 数据集的主要特征&#xff1a; 综合睡眠指标&#xff1a; 探索睡眠持续时…

重庆市北斗新型智慧城市政府项目

技术栈&#xff1a;使用vue2JavaScriptElementUIvuexaxiosmapboxcesium 项目描述&#xff1a;重庆市北斗新型智慧城市政府项目是基于千寻孪界开发的一款智慧城市项目&#xff0c;包含车辆实时位置定位&#xff0c;智能设备的报警&#xff0c;基础设施的部设等等功能 工作内容&a…

WebSocketServer的使用(@ServerEndpoint)

前端代码 function initWebSocket() {if (typeof WebSocket "undefined") {console.log("您的浏览器不支持WebSocket");} else {console.log("您的浏览器支持WebSocket");//实现化WebSocket对象&#xff0c;指定要连接的服务器地址与端口 建立连…

React的hooks---自定义hooks

通过自定义 Hook&#xff0c;可以将组件逻辑提取到可重用的函数中&#xff0c;在 Hook 特性之前&#xff0c;React 中有两种流行的方式来共享组件之间的状态逻辑&#xff1a;render props和高阶组件&#xff0c;但此类解决方案会导致组件树的层级冗余等问题。而自定义 Hook 的使…

【LeetCode】75.颜色分类

题目 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;使得相同颜色的元素相邻&#xff0c;并按照红色、白色、蓝色顺序排列。 我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的情况…

Flink状态的理解

Flink是一个带状态的数据处理系统&#xff1b;系统在处理数据的过程中&#xff0c;各算子所记录的状态会随着数据的处理而不断变化&#xff1b; 1. 状态 所谓状态State&#xff0c;一般指一个具体的 Task 的状态&#xff0c;即线程处理过程中需要保存的历史数据或历史累计数据…

数据结构【排序】

第七章 排序 一、排序 1.定义&#xff1a;将无序的数排好序 &#xff1b; 2.稳定性&#xff1a; Kᵢ和Kⱼ中&#xff0c;Kᵢ优先于Kⱼ那么在排序后的记录中仍然保持Kᵢ优先&#xff1b; 3.评价标准&#xff1a;执行时间和所需的辅助空间&#xff0c;其次是算法的稳定性&#xf…

[算法很美打卡] 多维数组篇 (打卡第一天)

文章目录 顺时针打印二维数组0所在的行列清零 顺时针打印二维数组 package 每日算法学习打卡.算法打卡.七月份.七月二十六号;public class test1 {public static void main(String[] args) {int[][] matrix {{1,2},{5,6},{9,10},{13,14},};print(matrix);}static void print(i…

62 | Python 操作 PDF

文章目录 Python 操作 PDF 教程1. 安装 PyPDF22. 读取 PDF 文件3. 创建 PDF 文件4. 修改 PDF 文件练习题1. 创建一个新的 PDF 文件,其中包含两个页面。第一个页面包含一段文本和一张图片,第二个页面包含一个表格。2. 打开练习题中创建的 PDF 文件,并将第一个页面中的文本修改…

LangChain Agents深入剖析及源码解密上(一)

LangChain Agents深入剖析及源码解密上(一) LangChain Agents深入剖析及源码解密上 Agent工作原理详解 本节会结合AutoGPT的案例,讲解LangChain代理(Agent)为核心的内容。我们前面已经谈了代理本身的很多内容,也看了绝大部分的源代码,例如:ReAct的源代码,还有mrkl的源代…

P3183 [HAOI2016] 食物链

题目描述 如图所示为某生态系统的食物网示意图&#xff0c;据图回答第 1 小题 现在给你 n 个物种和 m 条能量流动关系&#xff0c;求其中的食物链条数。物种的名称为从 1 到 n 编号 M 条能量流动关系形如 1,2,3​,…,am−1​,bm−1​,am​,bm​。其中 ai​ 和 bi​ 表示能量从物…

Java反射 -- 详细介绍 (框架核心)

反射 是 Java框架 的核心 &#xff0c;无论是Tomcat、SpringMVC、Spring IOC、Spring AOP、动态代理 &#xff0c;都使用到了 反射 反射的作用简单讲就是 无需 new 对象&#xff0c;就可以动态获取到一个类的全部信息&#xff0c;包括 属性、方法&#xff0c;构造器&#xff0…

边写代码边学习之全连接Dense

1. 全连接原理 全连接神经网络&#xff08;Fully Connected Neural Network&#xff09;是一种最基本的神经网络结构&#xff0c;也被称为多层感知器&#xff08;Multilayer Perceptron&#xff0c;MLP&#xff09;。其原理是模拟人脑神经元之间的连接方式&#xff0c;通过多个…

pytorch学习——多层感知机

一.感知机 感知机——神经网络基本单元&#xff0c;最简单的深度网络称为多层感知机。多层感知机由多层神经元组成&#xff0c;每一层与它上一层相连&#xff0c;从中接收输入&#xff0c; 同时每一层也与它的下一层相连&#xff0c;影响当前层的神经元。 解释&#xff1a;如果…

生态系统景观指数-聚集度指数AI计算

景观指数是景观生态学的常见指标&#xff0c;可用于不同生态系统的特征识别。景观指数是反映景观结构与空间格局的定量指标&#xff0c;目前已成为景观生态学领域常用的分析景观格局、度量空间异质性的重要方法。不同水平下的指数结果往往代表不同含义&#xff0c;应在把握指数…