2-1基础算法-枚举/模拟

文章目录

  • 1.枚举
  • 2.模拟

1.枚举

[例1] 特别数的和
在这里插入图片描述
评测系统

#include <iostream>
using namespace std;
bool pa(int x) {while (x) {if (x % 10 == 2 || x % 10 == 1 || x % 10 == 0 || x % 10 == 9) {return true;}else {x = x / 10;}}return false;
}
int main()
{int sum=0;int m;cin >> m;for (int i = 1; i <= m; i++) {if (pa(i)) {sum += i;}}cout << sum;return 0;
}

[例2] 反序数
在这里插入图片描述
评测系统

#include <iostream>
using namespace std;
int main()
{int n;cin >> n;int a, b, c;cin >> a >> b >> c;int sum = 0;for (int i = 1; i <= n; i++) {if (i % a != 0 && i % b != 0 && i % c != 0) {sum++;}}cout << sum;return 0;
}

[例3] 找到最多的数
在这里插入图片描述
评测系统

#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{int n, m;cin >> n >> m;int num = n * m;map<int,int> mp;vector<int> a(num);//记录去重后的序列while (num--) {int x;cin >> x;if (!mp.count(x)) {a.push_back(x);}mp[x]++;}for (const auto& x:a) { //也可以不使用vector,每次从map中取出[x.y]if (mp[x] * 2 > n * m)cout << x;}
}

[例4]
在这里插入图片描述
在这里插入图片描述
评测系统

对于每种可能的颜色,我们尝试计算如果将走廊涂成这种颜色需要多少天。在遍历过程中要跳过已经是这种颜色的房子,每次移动k步。最后记录对于这种颜色所需的涂色天数,并与之前的最小天数进行比较,取较小值。
输入数据的最大值即为初始颜色种类数

#include <iostream>
#include <vector>
using namespace std;
int main()
{int t;cin >> t;while (t--) {int n, k;cin >> n >> k;vector<int> a(n);int maxnum = 0;//记录初始颜色种类数for (int i = 0; i < n; ++i) {cin >> a[i];maxnum=max(maxnum, a[i]);}int ans = n;for (int c = 1; c <= maxnum; ++c) {int cnt = 0;int idx = 0;while (idx < n) {if (a[idx] == c) {idx++;continue;}idx += k;cnt++;}ans = min(cnt, ans);}cout << ans << endl;}
}

2.模拟

[例1] 扫雷
在这里插入图片描述
在这里插入图片描述
评测系统

#include <iostream>
using namespace std;
const int N = 150;
int main()
{int n, m;cin >> n >> m;int a[N][N], ans[N][N];for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cin >> a[i][j];}}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (a[i][j] == 1) { ans[i][j] = 9; continue; }int i2 = i, j2 = j;//遍历四周for (i2 = max(0, i - 1); i2 <= min(n - 1, i + 1); i2++) {for (j2 = max(0, j - 1); j2 <= min(m - 1, j + 1); j2++) {if (a[i2][j2] == 1) ans[i][j]++;}}}}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cout << ans[i][j]<<" ";}cout << endl;}return 0;
}

[例2] 灌溉
在这里插入图片描述
在这里插入图片描述
评测系统

使用类似于BFS的过程,用bool类型的irrigated数组记录当前位置是否已被灌溉,最终统计已被灌溉的数量。

#include <iostream>
#include <queue>
using namespace std;
const int N = 200;
int main()
{int n, m, t;cin >> n >> m >> t;bool irrigated[N][N];queue<pair<int, int>> q;for (int i = 0; i < t; i++) {int r, c;cin >> r >> c;r--;c--;irrigated[r][c] = true;q.push({ r,c });}int k;cin >> k;for (int minute = 0; minute < k; ++minute) {int size = q.size();for (int i = 0; i < size; ++i) {pair<int,int > fr=q.front();//取到水管的位置坐标int x = fr.first;int y = fr.second;q.pop();for (int i2 = max(0,x - 1); i2 <= min(n,x + 1); i2++) { //四周灌溉for (int j2 = max(0,y - 1); j2 <= min(m,y + 1); j2++) {if (!irrigated[i2][j2]) {irrigated[i2][j2] = true;q.push({i2, j2});}}}}}int count = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (irrigated[i][j]) {count++;}}}cout << count;return 0;
}

也可使用map

#include <iostream>
#include <map>
using namespace std;
const int N = 200;
int main()
{int n, m, t;cin >> n >> m >> t;bool irrigated[N][N];map<int, int> q;for (int i = 0; i < t; i++) {int r, c;cin >> r >> c;r--;c--;irrigated[r][c] = true;q[r]=c;}int k;cin >> k;for (int minute = 0; minute < k; ++minute) {int size = q.size();for (const auto& i:q) {int x = i.first;int y = i.second;for (int i2 = max(0,x - 1); i2 <= min(n,x + 1); i2++) {for (int j2 = max(0,y - 1); j2 <= min(m,y + 1); j2++) {if (!irrigated[i2][j2]) {irrigated[i2][j2] = true;q[i2]=j2;}}}}}int count = 0;for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (irrigated[i][j]) {count++;}}}cout << count;return 0;
}

[例3] 回文日期

在这里插入图片描述
在这里插入图片描述
评测系统

#include <iostream>
#include <string>
using namespace std;
bool huiwen(string s) {if (s[0] == s[7] && s[1] == s[6] && s[2] == s[5] && s[3] == s[4]) {return true;}elsereturn false;
}
bool er(string s) {if (s[0] == s[2] && s[2] == s[5] && s[5] == s[7] && s[1] == s[3] && s[3] == s[4] && s[4] == s[6]) {return true;}elsereturn false;
}
int pdday(int year, int month) {if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)return 31;else if (month == 2) {if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {return 29;}elsereturn 28;}elsereturn 30;
}
string zifuchuan(int year, int month, int day) {string s=to_string(year);if (month / 10 == 0) {s += '0' + to_string(month);}else {s += to_string(month);}if (day / 10 == 0) {s += '0' + to_string(day);}else {s += to_string(day);}return s;
}
int main()
{int day, month, year;int chushi;int day1,day2;cin >> chushi;day1 = chushi % 10;chushi = chushi / 10;day2= chushi % 10;chushi = chushi / 10;day=day2 * 10 + day1;day1 = chushi % 10;chushi = chushi / 10;day2 = chushi % 10;chushi = chushi / 10;month = day2 * 10 + day1;year = chushi;bool flag = 0;bool pdhuiwen = 0;bool pder = 0;int i, j, k;for (i = year;; i++) {for (j = 1; j <= 12; j++) {if (flag == 0) {j = month;}for (k = 1; k <= pdday(year,month); k++) {if (flag == 0) {k = day+1;flag = 1;}string s=zifuchuan(i, j, k);if (pdhuiwen!=1&&huiwen(s)) {cout << s << endl;pdhuiwen = 1;}if (pder!=1&&er(s)) {cout << s;pder = 1;}if (pdhuiwen == 1 && pder == 1) {return 0;}}}}
}

[例4] 小蓝和小桥的挑战
在这里插入图片描述
评测系统

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{int n;cin >> n;while (n--) {int m;cin >> m;vector<int> a(m);for(int i=0;i<m;i++){cin >> a[i];}int cnt = count(a.begin(), a.end(), 0); // #include <algorithm>int sum = 0;for (const auto& x : a) {sum += x;}if (sum == 0) {cout << cnt + 1;}elsecout << cnt<<endl;}
}

[例5] DNA序列修正

在这里插入图片描述
在这里插入图片描述

评测系统

#include <iostream>
using namespace std;
bool pipei(char a, char b) {return (a == 'A' && b == 'T') || (a == 'T' && b == 'A') || (a == 'C' && b == 'G') || (a == 'G' && b == 'C');
}
int main()
{int n;cin >> n;string s1, s2;cin >> s1 >> s2;int cnt = 0;//计数for (int i = 0; i < n; ++i) {if (!pipei(s1[i], s2[i])) {cnt++;for (int j = i + 1; j < n; j++) {if (!pipei(s1[j], s2[j])&& pipei(s1[i], s2[j])&& pipei(s1[j], s2[i])) {swap(s2[i], s2[j]);break;}}}}cout << cnt;
}

[例6] 无尽的石头
在这里插入图片描述
在这里插入图片描述
评测系统

#include <iostream>
using namespace std;
int ssum(int x) {int sum = 0;while (x) {sum += x % 10;x /= 10;}return sum;
}
int main()
{int t;cin >> t;while (t--) {int x = 0;cin >> x;int step = 0;bool end = 0;for (int i = 1; i <= x; i += ssum(i)) {if (i == x) {cout << step << endl;end = 1;}step++;}if (end == 0) {cout << -1 << endl;}}
}

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

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

相关文章

【pytest】单元测试文件的写法

前言 可怜的宾馆&#xff0c;可怜得像被12月的冷雨淋湿的一条三只腿的黑狗。——《舞舞舞》 \;\\\;\\\; 目录 前言test_1或s_test格式非测试文件pytest.fixture()装饰器pytestselenium test_1或s_test格式 要么 test_前缀 在前&#xff0c;要么 _test后缀 在后&#xff01; …

低压无功补偿在分布式光伏现场中的应用

摘要&#xff1a;分布式光伏电站由于建设时间短、技术成熟、收益明显而发展迅速&#xff0c;但光伏并网引起用户功率因数异常的问题也逐渐凸显。针对分布式光伏电站接入配电网后功率因数降低的问题&#xff0c;本文分析了低压无功补偿装置补偿失效的原因&#xff0c;并提出了一…

代码随想录算法训练营第46天| 139.单词拆分 多重背包

JAVA代码编写 139.单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 **注意&#xff1a;**不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: s &…

Java - JVM内存模型及GC(垃圾回收)机制

JVM内存模型 JVM堆内存划分&#xff08;JDK1.8以前&#xff09; JVM堆内存划分&#xff08;JDK1.8之后&#xff09; 主要变化在于&#xff1a; java8没有了永久代&#xff08;虚拟内存&#xff09;&#xff0c;替换为了元空间&#xff08;本地内存&#xff09;。常量池&#…

数据库中常用的锁

目录 1、数据库中常用的锁类型 2、常见的数据库 3、以MySQL为例 3.1 MySQL的事务 3.2 MySQL事务的四大特性 1. 原子性&#xff08;Atomicity&#xff09; 2. 一致性&#xff08;Consistency&#xff09; 3. 隔离性&#xff08;Isolation&#xff09; ⭐mysql中的事务隔…

temu上传产品的素材哪里找

在为Temu&#xff08;拼多多跨境电商平台&#xff09;上传产品时&#xff0c;您需要准备一些高质量的素材&#xff0c;包括图片和视频。这些素材对于吸引用户的注意力、展示产品的特点以及提高购买意愿非常重要。但是&#xff0c;很多卖家都不知道从哪里找到这些素材。本文将为…

【Deeplearning4j】小小的了解下深度学习

文章目录 1. 起因2. Deeplearning4j是什么3. 相关基本概念4. Maven依赖5. 跑起来了&#xff0c;小例子&#xff01;6. 鸢尾花分类代码 7. 波士顿房价 回归预测代码 8. 参考资料 1. 起因 其实一直对这些什么深度学习&#xff0c;神经网络很感兴趣&#xff0c;之前也尝试过可能因…

Unity-小工具-LookAt

Unity-小工具-LookAt &#x1f959;介绍 &#x1f959;介绍 &#x1f4a1;通过扩展方法调用 gameObject.LookAtTarget&#xff0c;让物体转向目标位置 &#x1f4a1;gameObject.StopLookat 停止更新 &#x1f4a1;可以在调用时传入自动停止标记&#xff0c;等转向目标位置后自…

.net 洋葱模型

洋葱架构 内层部分比外层更抽象(内层接口&#xff0c;外层实现)。外层的代码只能调用内层的代码&#xff0c;内层的代码可以通过依赖注入的形式来间接调用外层的代码 简单的例子&#xff0c;引用依赖图 demo 接口类库 EmailInfo using System; using System.Collections.…

Python安装包(模块)的八种方法,Python初学者必备知识点

文章目录 1. 使用 easy\_install2. 使用 pip install3. 使用 pipx4. 使用 setup.py5. 使用 yum6. 使用 pipenv7. 使用 poetry8. 使用 curl 管道关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Py…

轻量封装WebGPU渲染系统示例<44>- 材质组装流水线(MaterialPipeline)之灯光和阴影(源码)

目标: 数据化&#xff0c;模块化&#xff0c;自动化 备注: 从这个节点开始整体设计往系统规范的方向靠拢。之前的都算作是若干准备。所以会和之前的版本实现有些差异。 当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/material/src/voxgpu/sa…

apt-get update失败

一、先验证是否有网络 rootlocalhost:~# ping www.baidu.com ping: www.baidu.com: Temporary failure in name resolution rootlocalhost:~# 说明没有网&#xff0c;参考&#xff1a;https://blog.csdn.net/qq_43445867/article/details/132384031 sudo vim /etc/resolv.con…

代码随想录二刷 | 二叉树 |404.左叶子之和

代码随想录二刷 &#xff5c; 二叉树 &#xff5c;404.左叶子之和 题目描述解题思路递归法迭代法 代码实现递归法迭代法 题目描述 404.左叶子之和 给定二叉树的根节点 root &#xff0c;返回所有左叶子之和。 示例 1&#xff1a; 输入: root [3,9,20,null,null,15,7] 输出…

使用node实现链接数据库并对数据库进行增删改查的后端接口

环境 node npm 编辑器 vscode 项目配置 新建目录 用vscode打开 终端输入 npm init -y npm install mysql npm install express 代码 安装好之后的代码页面 新建 在根目录新建api.js文件 const express require(express); const db require(./db/index); const app…

13、RockerMQ消息类型之广播与集群消息

RocketMq中提供两种消费模式&#xff1a;集群模式和广播模式。 集群模式 集群模式表示同一个消息会被同一个消费组中的消费者消费一次&#xff0c;消息被负载均衡分配到同一个消费者上的多个实例上。 还有另外一种平均的算法是AllocateMessageQueueAveragelyByCircle&#xff…

CSS 的背景属性(开发中常用)

目录 1 内容预览 背景颜色 背景图片 背景平铺 背景图片位置(常用) 背景图像固定 背景复合写法 背景色半透明 实现案例 1 内容预览 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 注意&#xff1a; 把表格中的五个属背下来&#xff0c…

约数性质以及辗转相除法

文章目录 AcWing 869. 试除法求约数题目链接思路CODE AcWing 870. 约数个数题目链接思路CODE AcWing 871. 约数之和题目链接思路CODE AcWing 872. 最大公约数题目链接思路CODE AcWing 869. 试除法求约数 题目链接 https://www.acwing.com/activity/content/problem/content/9…

【LuatOS】简单案例网页点灯

材料 硬件&#xff1a;合宙ESP32C3简约版&#xff0c;BH1750光照度模块&#xff0c;0.96寸OLED(4P_IIC)&#xff0c;杜邦线若干 接线&#xff1a; ESP32C3.GND — OLED.GND — BH1750.GND ESP32C3.3.3V — OLED.VCC — BH1750.VCC ESP32C3.GPIO5 — OLED.SCL — BH1750.SCL E…

AOP跨模块捕获异常遭CGLIB拦截而继续向上抛出异常

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、BUG详情 1.1 报错信息 1.2 接口响应信息 1.3 全局异常处理器的定义 二、排查过程 三、解决方案 四、总结 前言 最近&…

数据科学工作的20个Pandas函数(备忘)

Pandas 是数据科学社区中使用最广泛的库之一&#xff0c;它是一个强大的工具&#xff0c;可以进行数据操作、清理和分析。 本文将提供最常用的 Pandas 函数以及如何实际使用它们的样例。我们将涵盖从基本数据操作到高级数据分析技术的所有内容&#xff0c;到本文结束时&#xf…