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

  • 点击跳转专栏=>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/
📢这位道友请留步☁️,我观你气度不凡,谈吐间隐隐有王者霸气💚,日后定有一番大作为📝!!!旁边有点赞👍收藏🌟今日传你,点了吧,未来你成功☀️,我分文不取,若不成功⚡️,也好回来找我。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣 56. 合并区间

题目来源&#xff1a;https://leetcode.cn/problems/merge-intervals/description/ C题解&#xff1a;根据左区间排序&#xff0c;更新每一段的右区间最大值&#xff0c;直到间断。 class Solution { public:static bool cmp(vector<int> & a, vector<int> &a…

PHP 药店管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 药品管理系统 是一套完善的web设计系统,系统采用smarty框架进行开发设计&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 PHP 药店管理系统mysql数据库web结构apache计 下载地址…

Python实现九宫格数独小游戏

1 问题 有1-9个数字&#xff0c;将他们填入一个3*3的九宫格中&#xff0c;使得他们的每行&#xff0c;每列&#xff0c;以及对角线上的和相等&#xff0c;且要求每个格子的数字不可以重复。使用python列出所有可能的组合。示例如下: 2 方法 每行&#xff0c;列&#xff0c;对角…

Tomcat 的使用(图文教学)

Tomcat 的使用&#xff08;图文教学&#xff09; 前言一、什么是Tomcat&#xff1f;二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中6.1 方式一6.2 …

什么是Java中的JVM(Java虚拟机)?

JVM&#xff08;Java虚拟机&#xff09;是Java平台的核心组件之一&#xff0c;是一个用于执行Java字节码的虚拟计算机。Java源代码经过编译器编译&#xff0c;生成字节码文件&#xff08;.class文件&#xff09;&#xff0c;然后由JVM来解释和执行这些字节码。JVM负责将字节码翻…

vue3+ts+element-plus 之使用node.js对接mysql进行表格数据展示

vue3tselement-plus axiosnode.jsmysql开发管理系统之表格展示 ✏️ 1. 新建一个node项目* 初始化node* 安装可能用到的依赖* 配置文件目录* 添加路由router1. 添加router.js文件&#xff0c;添加一个test目录2. 修改app.js ,引入router&#x1f4d2; 3. 启动并在浏览器打开 * …

Hive内部表和外部表

表类型详解 表分类 在Hive中,表类型主要分为两种 第一种&#xff1a;内部表 也叫管理表表目录会创建在集群上的{hive.metastore.warehouse.dir}下的相应的库对应的目录中。默认创建的表就是内部表 第二种&#xff1a;外部表 外部表需要使用关键字"external"&#xff…

【MATLAB第60期】基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型

【MATLAB第60期】源码分享 | 基于MATLAB的ARMAX具有外生回归因子的移动平均自回归模型 一、简要介绍 ARMAX模型相比ARMA考虑了影响因素 &#xff0c;即可以实现基于时间序列数据的回归预测。目前&#xff0c;ARMAX预测未来功能存在困难&#xff0c;本篇文章不予介绍。大致思路…

基于Javaweb+Vue3实现淘宝卖鞋前后端分离项目

前端技术栈&#xff1a;HTMLCSSJavaScriptVue3 后端技术栈&#xff1a;JavaSEMySQLJDBCJavaWeb 文章目录 前言1️⃣登录功能登录后端登录前端 2️⃣商家管理查询商家查询商家后端查询商家前端 增加商家增加商家后端增加商家前端 删除商家删除商家后端删除商家前端 修改商家修改…

小程序如何删除/上架/下架商品

在小程序中&#xff0c;产品的删除、上架和下架是常见的操作&#xff0c;可以根据实际需求来管理商品的展示与销售。下面将介绍如何在小程序中删除上架下架商品的具体步骤。 进入商品管理页面&#xff0c; 在个人中心点击管理入口&#xff0c;然后找到“商品管理”菜单并点击。…

Linux虚拟机克隆后无法上网

打开终端执行以下命令 sudo mv /var/lib/NetworkManager /var/lib/NetworkManager.bak 重启虚拟机&#xff0c;打开终端执行以下命令&#xff1a; ip addr 就能够上网并且有新的IP&#xff0c;亲测有效&#xff01;

Stephen Wolfram:概率从何而来?

Where Do the Probabilities Come From? 概率从何而来&#xff1f; OK, so ChatGPT always picks its next word based on probabilities. But where do those probabilities come from? Let’s start with a simpler problem. Let’s consider generating English text one …

Stephen Wolfram:一次只添加一个词

It’s Just Adding One Word at a Time 一次只添加一个词 That ChatGPT can automatically generate something that reads even superficially like human-written text is remarkable, and unexpected. But how does it do it? And why does it work? My purpose here is t…

C#安装包制作过程详解

本文讲解C#安装包制作过程。 文章目录 一、安装打包插件二、项目的部署与安装三、制作安装包时注意路径一、安装打包插件 打开VS2017:工具 --> 扩展和更新 --> 联机,搜索Microsoft Visual Studio Installer Projects,如图: 下载Microsoft Visual Studio Installe…

我在VScode学Python(Python函数,Python模块导入)

我的个人博客主页&#xff1a;如果’真能转义1️⃣说1️⃣的博客主页 &#xff08;1&#xff09;关于Python基本语法学习---->可以参考我的这篇博客《我在VScode学Python》 &#xff08;2&#xff09;pip是必须的在我们学习python这门语言的过程中Python ----&#xff1e;&a…

vue中的异步请求Axios(个人学习笔记五)

目录 友情提醒第一章、传统的jQuery方式获取数据1.1&#xff09;后端controller层代码1.2&#xff09;传统的jQuery获取数据1.3&#xff09;使用vue对象和jQuery获取异步数据 第二章、使用Axios获取数据2.1&#xff09;axios简介2.2&#xff09;axios两种使用方式2.3&#xff0…

Clion开发stm32之微妙延迟(采用nop指令实现)

前言 需要借助逻辑分析仪动态调整参数此次测试的开发芯片为stm32f103vet6 延迟函数 声明 #define NOP_US_DELAY_MUL_CNT 5 /*nop 微妙延迟需要扩大的倍数(根据实际动态修改)*/ void bsp_us_delay_nop(uint32_t us);void bsp_ms_delay_nop(uint32_t ms);定义 void bsp_us_dela…

Java连锁门诊医院HIS信息管理系统源码

Java连锁门诊医院HIS信息管理系统源码&#xff1a;SaaS运维平台多医院多机构多门诊入驻强大的电子病历完整开发文档 一、系统概述 ❉采用主流成熟技术&#xff0c;软件结构简洁、代码规范易阅读&#xff0c;SaaS应用&#xff0c;全浏览器访问前后端分离&#xff0c;多服务协同…

CRM系统化整合从N-1做减法实践 | 京东物流技术团队

1 背景 京销易系统已经接入大网、KA以及云仓三个条线商机&#xff0c;每个条线商机规则差异比较大&#xff0c;当前现状是独立实现三套系统分别做支撑。 2 目标 2022年下半年CRM目标是完成9个新条线业务接入&#xff0c;完成销售过程线上化&#xff0c;实现销售规则统一。 …

IDEA使用lombok实体类加上@Data注解后无法找到get和set方法

文章目录 一、问题原因二、解决方法1.File→Settings2.Plugins→搜索"lombok"→Install3.Restart IDE&#xff08;重启IDEA&#xff09; 一、问题原因 IDEA没有安装lombok插件 二、解决方法 1.File→Settings 2.Plugins→搜索"lombok"→Install 3.Restart…