蓝桥杯——17

news/2024/5/17 11:26:17/文章来源:https://blog.csdn.net/m0_62993594/article/details/137506043

学习视频:18-深搜的剪枝策略练习_哔哩哔哩_bilibili

Q:找数字

#include<iostream>
#include<cstring>
using namespace std;
int n;
bool ok;
void dfs(int num, int cnt) {if (cnt >= 19) {return;}if (ok) {return;}if (num % n == 0) {ok = true;cout << num;return;}dfs(num * 10 + 0, cnt + 1);dfs(num * 10 + 1, cnt + 1);
}int main() {cin >> n;dfs(1, 1);return 0;
}

Q:全排列

#include<iostream>
#include<vector>
using namespace std;
int n;
int m = 1;
int a[12];
vector<int> temp;
bool vis[12];
void dfs(int c) {if (c == n) {for (int i = 0; i < temp.size(); i++) {cout << temp[i];}cout << '\n';return;}for (int i = 1; i <= n; i++) {if (!vis[i]) {vis[i] = true;temp.push_back(i);dfs(c + 1);temp.pop_back();vis[i] = false;}}}int main() {cin >> n;for (int i = 1; i <= n; i++) {a[i] = i;m *= i;}cout << '\n';cout << m << endl;dfs(0);return 0;
}
/*
4
*/

Q:蒜头军的旅游计划

#include<iostream>
#include<vector>
using namespace std;
int n;
int city[20][20];
bool vis[20];
int sum = 150000;
void dfs(int pos, int cnt, int s) {if (s >= sum) {return;}if (cnt == n) {s += city[pos][1];if (s < sum)sum = s;return;}for (int i = 1; i <= n; i++) {if (i != pos && !vis[i]) {vis[i] = true;dfs(i, cnt + 1, s + city[pos][i]);vis[i] = false;}}}
int main() {cin >> n;for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {cin >> city[i][j];}}vis[1] = true;dfs(1, 1, 0);cout << sum << endl;return 0;
}
/*
4
0 1 1 1
1 0 2 1
5 5 0 6
1 1 3 0
*/

Q:正方形

#include<iostream>
#include<vector>
using namespace std;
int n;
int goal;
int p[25];
bool ok;
bool vis[25];
void dfs(int cnt, int len) {if (cnt == 4) {ok = true;return;}if (ok) {return;}if (len > goal) {return;}if (len == goal) {dfs(cnt + 1, 0);return;}for (int i = 0; i < n; i++) {if (!vis[i]) {vis[i] = true;dfs(cnt, len + p[i]);vis[i] = false;}}}int main() {cin >> n;int sum = 0;for (int i = 0; i < n; i++) {cin >> p[i];sum += p[i];}if (sum % 4 == 0) {goal = sum / 4;dfs(0, 0);if (ok)cout << "Ok" << endl;elsecout << "No" << '\n';}else {cout << "No" << endl;}return 0;
}
/*
4
1 1 1 1
*/

Q:因数最多的数

太难了,听不懂

Q:置换的玩笑

#include<iostream>
#include<string>
using namespace std;
string s;
int ch[60];
int n;
bool ok;
bool vis[60];
void dfs(int u,int cnt) {if (ok)return;if (u == s.size()) {for (int i = 0; i < n; i++) {cout << ch[i] << " ";}cout << '\n';ok = true;return;}int x = s[u] - '0';if (x < n && !vis[x]) {ch[cnt] = x ;vis[x] = true;dfs(u + 1, cnt + 1);vis[x] = false;}if (u >= s.size() - 1)return;x = x * 10 + s[u + 1] - '0';if (x <= n && !vis[x]) {ch[cnt] = x ;vis[x] = true;dfs(u + 2, cnt + 1);vis[x] = false;}
}int main() {cin >> s; n = s.size() <= 9 ? s.size() : (s.size() - 9) / 2 + 9;dfs(0, 0);return 0;
}
/*
4111109876532
*/

Q:Betsy的旅行

#include<iostream>
using namespace std;
int n;
int ans = 0;
bool vis[8][8];
int dir[4][2] = { {0,1},{0,-1},{-1,0},{1,0} };
void dfs(int x, int y, int step) {if (x == n - 1 && y == 0) {if (step == n * n)ans++;return;}if (step >= n * n)return;vis[x][y] = true;for (int i = 0; i < 4; i++) {int fx = x + dir[i][0];int fy = y + dir[i][1];if (fx >= 0 && fx < n && fy >= 0 && fy < n && !vis[fx][fy]) {dfs(fx, fy, step + 1);}}vis[x][y] = false;
}
int main() {cin >> n;dfs(0, 0, 1);cout << ans << endl;return 0;
}

Q:方块消消乐

不会,放弃

————————————————————————————————

学习视频:19-广度优先搜索视频讲解_哔哩哔哩_bilibili

S:数据结构——队列

先进先出,队首出,队尾插入

操作:push入队、pop出队、empty是否空、size元素个数、front访问队首元素

引用:

#include<queue>
queue<int> q;

手动清空:

while(!p.empty()){p.pop();
}

使用:

#include<iostream>
#include<queue>
using namespace std;
int main() {queue<string> q;q.push("hanxiaolu");q.push("tianmeng");while (!q.empty()) {cout << q.front() << '\n';q.pop();}return 0;
}

Q:报数游戏

#include<iostream>
#include<queue>
using namespace std;
int main() {int n, m;cin >> n >> m;queue<int> q;int a = 1;for (int i = 0; i < n; i++) {q.push(i + 1);}int tmp;while (q.size() > 1) {if (a == 5) {q.pop();a = 1;}else {tmp = q.front();q.pop();q.push(tmp);a++;}}cout << q.front();return 0;
}

S:

广度优先搜索BFS

求最短路的经常用BFS

Q:迷宫游戏

#include<iostream>
#include<queue>
using namespace std;
int n, m;
char maze[10][10];
bool vis[10][10];
int dir[4][2] = { {-1,0},{1,0},{0,1},{0,-1} };
struct node {int x, y, d;node(int xx, int yy, int dd) {x = xx;y = yy;d = dd;}
};
bool in(int x, int y) {return x >= 0 && x < n && y >= 0 && y < m;
}
int bfs(int sx, int sy) {queue<node> q;q.push(node(sx, sy, 0));   //先放进去一个初始的节点vis[sx][sy] = true;while (!q.empty()) {   //循环条件是不空node now = q.front();  //定义新节点后删除q.pop();for (int i = 0; i < 4; i++) {  //遍历四个方向int fx = now.x + dir[i][0];int fy = now.y + dir[i][1];if (in(fx, fy) && !vis[fx][fy] && maze[fx][fy] != '*') {//条件筛选if (maze[fx][fy] == 'T') {  //终止条件return now.d + 1;}else { //继续放小的vis[fx][fy] = true;q.push(node(fx, fy, now.d + 1));}}}return -1;
}
int main() {cin >> n >> m;for (int i = 0; i < n; i++) {cin >> maze[i];}int x, y;for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (maze[i][j] == 'S')x = i, y = j;		}}cout << bfs(x, y) << '\n';return 0;
}
/*
5 6
....S*
.**...
.*..*.
*..**.
.T....
*/

Q:一维坐标的移动

#include<iostream>
#include<queue>
using namespace std;
queue<pair<int,int>> q;
bool vis[5005];int main() {int n, A, B, now, step;cin >> n >> A >> B;q.push(make_pair(A, 0));//结构体也可以vis[A] = true;while (!q.empty()) {now = q.front().first;step = q.front().second;q.pop();if (now == B) {   //终止条件cout << step;break;}if (now + 1 <= n && !vis[now + 1]) {//下一个没有访问过并且未越界q.push(make_pair(now + 1, step + 1));vis[now + 1] = true;}if (now - 1 >= 0 && !vis[now - 1]) {q.push(make_pair(now - 1, step + 1));vis[now - 1] = true;}if (now * 2 <= n && !vis[now * 2]) {q.push(make_pair(now * 2, step + 1));vis[now * 2] = true;}}return 0;
}

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

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

相关文章

MySQL-基本SQL语句编写:运算符练习

运算符练习 1.选择工资不在5000到12000的员工的姓名和工资 SELECT last_name,salary FROM employees #where salary not between 5000 and 12000; WHERE salary < 5000 OR salary > 12000;2.选择在20或50号部门工作的员工姓名和部门号 SELECT last_name,department_id…

基于springboot+vue+Mysql的职称评审管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

4月6号排序算法(2)

堆排序 讲堆排序之前我们需要了解几个定义 什么叫做最大堆&#xff0c;父亲节点&#xff0c;以及孩子节点 将根节点最大的堆叫做最大堆或大根堆&#xff0c;根节点最小的堆叫做最小堆或小根堆。 每个节点都是它的子树的根节点的父亲 。 反过来每个节点都是它父亲的孩子 。 …

Java从坚持到精通-SpringSecurity

1.安全框架是什么 安全框架的本质就是一堆过滤器的组成&#xff0c;目的在于保护系统资源&#xff0c;所以在到达资源之前会做一系列的验证工作&#xff0c;这些验证工作通过一系列的过滤器完成。安全框架通常的功能有认证、授权、防止常见的网络攻击&#xff0c;以此为核心拓…

IP地址中网络号的查看方法

IP地址是互联网中设备的标识&#xff0c;它由网络号和主机号两部分组成。网络号用于标识设备所连接的网络&#xff0c;而主机号则用于标识该网络中的具体设备。了解如何查看IP地址中的网络号对于网络管理员和需要进行网络配置的用户来说至关重要。虎观代理将介绍几种常见的查看…

linux之文件系统、inode和动静态库制作和发布

一、背景 1.没有被打开的文件都在磁盘上 --- 磁盘级文件 2.对磁盘级别的文件&#xff0c;我们的侧重点 单个文件角度 -- 这个文件在哪里&#xff0c;有多大&#xff0c;其他属性是什么&#xff1f; 站在系统角度 -- 一共有多少文件&#xff1f;各自属性在哪里&#xff1f…

Vue3---基础2(component)

主要讲解 component 的创建 以及vue插件的安装 Vue.js Devtools 为谷歌浏览器的Vue插件&#xff0c;可以在调试工具内查看组件的数据等 下载 有两种下载方式 1. 谷歌应用商店 打开Chrome应用商店去下载&#xff0c;这个方法需要魔法 2. 极简插件 极简插件官网_Chrome插件下载_…

react渲染列表信息(简单易学)

1.新建个文件夹&#xff0c;启动终端&#xff0c;使用create-react-app my-react命令创建项目&#xff0c;其中my-react是自定义项目名称。 2.删除根目录src文件夹下多余文件&#xff0c;保留index.js和index.css文件 3.安装scss需要的依赖&#xff0c;使用npm install --sav…

常见性能测试工具对比

在性能测试工作中&#xff0c;我们常常会遇到好几个工具&#xff0c;但是每一个工具都有自己的优势&#xff0c;一时间不知道怎么选择。 今天我们就将性能测试常用的工具进行对比&#xff0c;这样大家在选择工具的时候心里就有底啦&#xff01; 阿里云PTS 性能测试PTS&#xff…

【Linux】shell 脚本基础使用

在终端中输入命令可以完成一些常用的操作&#xff0c;但是我们都是一条一条输入命令&#xff0c;比较麻烦&#xff0c;为了解决这个问题&#xff0c;就会涉及到 shell 脚本&#xff0c;它可以将很多条命令放到一个文件里面&#xff0c;然后直接运行这个文件即可。 shell 脚本类…

【UnityRPG游戏制作】Unity_RPG项目之界面面板分离和搭建

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

【Qt】多线程

目录 一、常用API 二、线程安全 2.1 互斥锁 2.2 条件变量 2.3 信号量 在Qt中&#xff0c;多线程的处理一般是通过QThread类来实现 QThread代表一个在应用程序中可以独立控制的线程&#xff0c;也可以和进程中的其他线程共享数据。QThread对象管理程序中的一个控制线程 …

深入探索力扣第12题:整数转罗马数字的算法之旅

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作http://t.csdnimg.cn/Q59WX作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打…

业务逻辑漏洞(靶场) fiddler

目录 fiddler简介&#xff1a; 业务逻辑漏洞&#xff1a; fiddler下载 靶场&#xff1a; 实验一 ​编辑实验二&#xff08;ps 更改实验url会变&#xff0c;fiddler没抓到东西看看代理改没改&#xff09; 实验三 实验四 fiddler简介&#xff1a; 一款网络抓包工具&#…

ht1622不显示无反应问题解决

如果你正在写ht1622 驱动时&#xff0c;怎么看程序都没问题&#xff0c;抓取波形&#xff0c;示波器分析波形&#xff0c;如果都没有问题&#xff0c;那么很大可能是硬件问题&#xff0c;检测看看 ht1622 RD是不是接地了。 RD 低会进入读取模式&#xff0c;所以不用RD 请将RD悬…

雄安建博会:中矿雄安新区的总部开工建设

中矿落位雄安&#xff1a;助力国家战略与新区发展 雄安新区&#xff0c;作为中国未来发展的重要战略支点&#xff0c;正迎来一系列央企总部的疏解与建设。最近&#xff0c;中国矿产资源集团有限公司&#xff08;简称“中矿”&#xff09;在雄安新区的总部项目正式开工建设&…

Jettison 1.8.7直装版 外部磁盘辅助弹出

Jettison 是一款适用于 macOS 的实用工具&#xff0c;旨在简化外部驱动器的管理。它可以自动卸载和重新挂载外部驱动器&#xff0c;帮助您更方便地使用和保护您的存储设备。 软件下载&#xff1a;Jettison 1.8.7直装版下载 自动卸载和重新挂载&#xff1a;Jettison 可以在您离开…

yolo预标注的txt转换成labelme中segment的json

前言 在yolo预标注的时候&#xff0c;想把保存的txt转换成labelme中segment的json&#xff0c;于是写了下面的脚本。 1.引入库 完整代码&#xff1a; import os import json from tqdm import tqdmdef get_image_size(image_path):from PIL import Imagewith Image.open(ima…

Spring boot如何执行单元测试?

Spring Boot 提供了丰富的测试功能&#xff0c;主要由以下两个模块组成&#xff1a; spring-boot-test&#xff1a;提供测试核心功能。spring-boot-test-autoconfigure&#xff1a;提供对测试的自动配置。 Spring Boot 提供了一个 spring-boot-starter-test一站式启动器&…

unipush+个推实现消息推送

1.注册个推平台的帐号个推&#xff0c;专业的数据智能服务商-为垂直领域提供数据智能解决方案 2.应用列表中选择新增应用/服务 3.填写下应用信息4.创建好应用后在manifest.json中的sdkConfigs配置上写入appid、appkey、appsecret "sdkConfigs" : {"ad" :…