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

news2024/11/26 10:34:51
  • 点击跳转专栏=>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 i
   e=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-N
    for (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的位置是A
    return (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.coloradmin.cn/o/778479.html

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

相关文章

【专题速递】多模态数字人、多模态媒体大模型以及AI与AIGC对音视频的影响

// 随着AIGC内容的兴起&#xff0c;多模态媒体大模型逐渐进入大家的视野&#xff0c;而LLM的发展又让人们对未来音视频工具产生了新的思考。7月29日LiveVideoStackCon2023上海站AIGC与内容生产专场&#xff0c;集齐当下最热门的AIGC话题&#xff0c;与您共享。 AIGC与内容生产…

华为云使用 helm 模板

登录华为云上的 cce 进入对应的集群&#xff0c;选择模板管理 注意&#xff1a;华为云上不能配置 helm 仓库&#xff0c;只提供手动上传模板&#xff0c;模板的后缀为 tgz 下载模板的方式有很多种&#xff0c;这里用 xxl-job 举例 添加 helm 仓库更新仓库下载模板 helm rep…

基于linux下的高并发服务器开发(第二章)- 2.24 信号集及相关函数

1.用户通过键盘 Ctrl C, 产生2号信号SIGINT (信号被创建) 2.信号产生但是没有被处理 &#xff08;未决&#xff09; - 在内核中将所有的没有被处理的信号存储在一个集合中 &#xff08;未决信号集&#xff09; - SIGINT信号状态被存储在第二个标志位上 - 这个…

概率论和随机过程的学习和整理--番外15,如何计算N合1的合成数量问题?

目录 1 目标问题&#xff1a;多阶2合1的合成问题 1.1 原始问题 1.2 合成问题要注意&#xff0c;合成的数量 1.3 合成问题不能用马尔科夫链来解决 2 方案1&#xff1a;用合成公式合成多次能解决吗&#xff1f; --不能&#xff0c;解决不了递归的问题 3 方案2&#xff0c;…

微分流形2:流形上的矢量场和张量场

来了来了&#xff0c;切向量&#xff0c;切空间。流形上的所有的线性泛函的集合&#xff0c;注意是函数的集合。然后取流形上的某点p&#xff0c;它的切向量为&#xff0c;线性泛函到实数的映射。没错&#xff0c;是函数到实数的映射&#xff0c;是不是想到了求导。我们要逐渐熟…

uni-app 微信小程序:启用组件按需注入

uni-app 微信小程序&#xff1a;启用组件按需注入 文章目录 uni-app 微信小程序&#xff1a;启用组件按需注入一、官方文档按需注入注意事项 二、HBuilder X 设置三、效果 一、官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html 按…

大数据面试题:HBase读写数据流程

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 参考答案&#xff1a; 1、写数据流程 1&#xff09;Client先访问zookeeper&#xff0c;获取hbase:meta表位于哪个Region Server。 2&#xff09;访…

MySQL的主从复制练习

基本原理图如下&#xff1a; 主从复制&#xff08;也称 AB 复制&#xff09;允许将来自一个MySQL数据库服务器&#xff08;主服务器&#xff09;的数据复制到一个或多个MySQL数据库服务器&#xff08;从服务器&#xff09;。当主库进行更新的时候&#xff0c;会自动将数据复制到…

【youcans动手学模型】目标检测之 RCNN 模型

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans动手学模型】目标检测之 RCNN 模型 1. R-CNN 目标检测1.1 论文摘要1.2 技术背景1.3 基本方法1.4 算法实现1.5 总结 2. 使用 PyTorch 实现 RCNN 目标检测2.1 训练 AlexNet 模型2.2 微调 Alex…

《个人理财》——第六章 理财规划计算工具与方法

考点1&#xff1a; 货币时间价值概述 货币时间价值 也叫资金的时间价值 • 货币在无风险条件下&#xff0c; 经历一定时间投资和再投资发生的增值 • 同等数量货币或现金流的未来价值更低 • 不同时间单位的货币不具有可比性 产生的原因• 现有货币用于投资&#xff0c; 可获得…

IDEA+SpringBoot +ssm+ Mybatis+easyui+Mysql求职招聘管理系统网站

IDEASpringBoot ssm MybatiseasyuiMysql求职招聘管理系统网站 一、系统介绍1.环境配置 二、系统展示1. 登录2.注册3.首页4.公司5.关于我们6.我的简历7.我投递的简历8.修改密码9. 管理员登录10.我的信息11.用户信息12.职位类别13. 职位列表14. 公司列表15. 日志列表 三、部分代码…

听GPT 讲K8s源代码--pkg(八)

k8s项目中 pkg/kubelet/envvars&#xff0c;pkg/kubelet/events&#xff0c;pkg/kubelet/eviction&#xff0c;pkg/kubelet/images&#xff0c;pkg/kubelet/kubeletconfig这些目录都是 kubelet 组件的不同功能模块所在的代码目录。 pkg/kubelet/envvars 目录中包含了与容器运行…

深度学习入门教学——神经网络

深度学习就是训练神经网络。 1、什么是神经网络&#xff1f; 举个最简单的例子&#xff0c;以下是一个使用线性回归来预测房屋价格的函数。这样一个用于预测房屋价格的函数被称作是一单个神经元。大一点的神经网络&#xff0c;就是将这些单个神经元叠加起来。例如&#xff1a…

Java基础之stream流最新版,stream流的基本操作

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

java 应用 cpu 过高故障排查

文章目录 一、前言二、测试代码 Test.java三、Linux 编译运行 Test.java 程序四、top 命令查看 cpu 使用情况五、查看进程下的线程详情 top -H -p 11748六、将线程 12240 的 pid 转为 16 进制 printf "0x%x\n" 12240七、jstack 查看进程的快照遗留 一、前言 前两天…

二十六章:Pyramid Vision Transformer ——金字塔视觉Transformer:一种无卷积的用于密集预测的多功能主干网络

0.摘要 虽然卷积神经网络&#xff08;CNN&#xff09;在计算机视觉领域取得了巨大成功&#xff0c;但本研究探讨了一种更简单、无卷积的骨干网络&#xff0c;适用于许多密集预测任务。与最近提出的专门用于图像分类的Vision Transformer&#xff08;ViT&#xff09;不同&#x…

无人机自主探索FUEL:代码阅读1--边界簇检测更新与视点生成

~/src/catkin_fuel_refactored/fuel_refactored/fuel_planner/bagbag中包含三个.sh文件&#xff0c;为rosbag指令&#xff0c;给出了录包指令以及有用话题信息 FIS 1、增量边界检测与聚类 路径&#xff1a;~/fuel_planner/active_perception/src/frontier_finder.cpp 主要函…

五、模型训练

目录 1. 线性模型1.1 Lasso 回归1.2 Ridge 回归 2. 树模型2.1 随机森林&#xff08;Random Forest&#xff0c;RF&#xff09;2.2 梯度提升树&#xff08;GBDT&#xff09;2.3 XGBoost2.4 LightGBM2.5 CatBoost2.6 模型深入对比 3. 神经网络3.1 多层感知机3.2 卷积神经网络3.3 …

Linux 下 nc 发送接收 udp、tcp数据

nc&#xff0c;全名叫 netcat&#xff0c;它可以用来完成很多的网络功能&#xff0c;譬如端口扫描、建立TCP/UDP连接&#xff0c;数据传输、网络调试等等&#xff0c;因此&#xff0c;它也常被称为网络工具的 瑞士军刀 。 一、只服务端使用nc 备注&#xff1a;这种方式只能发…