算法基础(三)(模拟)

1.模拟算法介绍:

  • 模拟算法通过模拟实际情况来解决问题,一般容易理解但是实现起来比较复杂,有很多需要注意的细节,或者是一些所谓很“麻烦”的东西。
  • 模拟题一般不涉及太难的算法,一般就是由较多的简单但是不好处理的部分组成的,考察选手的细心程度和整体的逻辑思维。
  • 一般为了使得模拟题写的逻辑清晰一些,经常会写比较多的小函数来帮助解题,例如int和string的相互转换回文串的判断日期的转换各种特殊条件的判断等等。

2.例题讲解:

题号:lanqiao OJ 549

1.扫雷

 该题要考虑边界情况,开设两个数组对a数组扫描,用b数组记录,根据题意一步步写就好,注意扫到雷时将该位置跳过(更为详细的步骤可以看12.题目:编号549 扫雷)

#include<bits/stdc++.h>
using namespace std;
const int N=150;
int a[N][N],b[N][N];
int main(){int n,m;cin>>n>>m;for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){cin>>a[i][j];}}for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){//有雷变9,该位置则不扫描,跳过if(a[i][j]){b[i][j]=9;continue;}//扫描地雷,边界问题用max函数和min函数解决,不需要罗列条件for(int _i=max(1,i-1);_i<=min(n,i+1);++_i){for(int _j=max(1,j-1);_j<=min(m,j+1);++_j){if(a[_i][_j]){b[i][j]++;}}}}}for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){cout<<b[i][j]<<' ';}cout<<'\n';}return 0;
}

 题号:lanqiao OJ 551

2.灌溉

与上题类似,还是设两个数组对a扫描,用b记录,多了一步将a与b同步,最后输出ans (更为详细的步骤可以看13.题目:编号511 灌溉)

#include<bits/stdc++.h>
using namespace std;
const int N=105;
bool a[N][N],b[N][N];
int main(){int n,m;cin>>n>>m;int t;cin>>t;while(t--){int c,r;cin>>c>>r;a[c][r]=1;}int k;cin>>k;while(k--){for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){if(a[i][j]){b[i][j]=b[i-1][j]=b[i+1][j]=b[i][j-1]=b[i][j+1]=1;}}}for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){a[i][j]=b[i][j];}}}int ans=0;for(int i=1;i<=n;++i){for(int j=1;j<=m;++j){if(a[i][j]){ans++;}}}cout<<ans<<'\n';return 0;
}

 题号:lanqiao OJ 498

3.回文日期

 ###该题难在思维,写的时候要保持清醒的头脑,缜密的逻辑,想好达成该目的要有什么操作,一定要自己好好想一想

要编写这么几个函数:

  1. 从int转换为指定位数的string的函数
  2. 从string转换为int的函数
  3. 判断闰年的函数
  4. 判断日期是否合法的函数
  5. 判断字符串是否是回文的函数
  6. 判断字符串是否是ABABBABA型回文的函数

(更为详细的步骤可以看14.题目:编号498 回文日期) 

#include<bits/stdc++.h>
using namespace std;
//字符串类型转换为整型函数
int s2i(string x){int res=0;for(auto & i : x )res=res*10+i-'0';return res;
}
//整型转换为字符串类型函数(缺位自动补0)
string i2s(int x,int w){string res;while(x){res+=x%10+'0';x/=10;}while(res.length()<w){res+='0';}reverse(res.begin(),res.end());return res;
}
//判断是否是闰年
bool isLeapYear(int year){return (year%4==0&&year%100)||(year%400==0);
}
//判断日期是否合法
bool isok(int year,int month,int day){int nums[]={0,31,28,31,30,31,30,31,31,30,31,30,31};if(isLeapYear(year))nums[2]=29;return day<=nums[month];
}
//判断是否是回文1
bool isPa1(string s){for(int i=0;i<s.length()/2;++i){if(s[i]!=s[s.length()-1-i])return false;}return true;
}
//判断是否是回文2
bool isPa2(string s){if(!isPa1(s))return false;return s[0]==s[2]&&s[1]==s[3];
}
int main(){string s;cin>>s;bool ans1=false,ans2=false;int year=s2i(s.substr(0,4)),month=s2i(s.substr(4,2)),day=s2i(s.substr(6,2));for(int i=year;i<=9999;++i){for(int j=1;j<=12;++j){if(i==year&&j<month)continue;for(int k=1;k<=31;++k){if(i==year&&j==month&&k<=day)continue;//是否合法if(!isok(i,j,k))continue;//拼接回去string date=i2s(i,4)+i2s(j,2)+i2s(k,2);//判断1if(!ans1&&isPa1(date)){cout<<date<<'\n';ans1=true;}//判断2if(!ans2&&isPa2(date)){cout<<date<<'\n';ans2=true;}}}}return 0;
}

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

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

相关文章

redis启动错误

错误&#xff1a; Creating Server TCP listening socket 127.0.0.1:6379: bind: No error redis-server.exe redis.windows.conf redis-cli.exe shutdown auth "yourpassword"

9 easy 28. 找出字符串中第一个匹配项的下标

暴力法&#xff1a; //给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。 //如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 // // // // 示例 1&…

harbor配置目录被误删后救援

我司微服务产品的业务镜像&#xff0c;在客户现场上云安全检测中发现需要打补丁&#xff1b;放在角落、时不常用一次的harbor镜像仓库需要用到了&#xff1a;将加固后的基础镜像上传以备份&#xff0c;方便其他同学拉取使用。 然鹅&#xff0c;启动后harbor-db频繁重启 harbo…

最新 CLion 2023.3.4 下载与安装 + 永久免费

文章目录 Stage 1 : 官网下载Stage 2 : 下载工具Stage 3-1 : windows为例Stage 3-2 : mac为例常见问题部分小伙伴 Mac 系统执行脚本遇到如下错误&#xff1a;解决方法&#xff1a; 执行脚本做了啥&#xff1f;和正版区别&#xff1f; Stage 1 : 官网下载 先去官网下载 我这里下…

EAP-TLS实验之H3C MSR2600-10-X1配置相关

H3C MSR2600充当802.1x流程中的NAS&#xff08;Network Access System&#xff09;角色&#xff0c;一般负责实际待验证的设备与认证服务器之间沟通的桥梁&#xff08;当然也可以配置成认证服务器角色&#xff09;工作。在挑选购买支持802.1x的路由器或交换机时需要跟厂家明确是…

DFS之剪枝与优化

剪枝 1.优化搜索顺序&#xff1a;在大部分情况下&#xff0c;我们应该优先搜索分支较少的结点 2.排除等效冗余&#xff08;在不考虑顺序的情况下&#xff0c;尽量用组合的方式来搜索&#xff09; 3.可行性剪枝 4.最优性剪枝 5.记忆化搜索 165. 小猫爬山 - AcWing题库 import …

小狐狸chat2.7.2免授权修复版可用版

小狐狸chat2.7.2免授权修复版可用版 在网络上面找了好几个版本不能使用&#xff0c;今天发布这个仔细测试正常使用 主要功能&#xff1a;独立版无限多开支持分销会员充值自己APP打包小程序万能创作MJ绘图多个国内接口 国外很火的ChatGPT&#xff0c;这是一种基于人工智能技术…

《汇编语言》- 读书笔记 - 第13章-int 指令

《汇编语言》- 读书笔记 - 第13章-int 指令 13.1 int 指令13.2 编写供应用程序调用的中断例程中断例程&#xff1a;求一 word 型数据的平方主程序中断处理程序执行效果 中断例程&#xff1a;将一个全是字母&#xff0c;以0结尾的字符串&#xff0c;转化为大写主程序中断处理程序…

IDEA利用鼠标调整字体大小

就可以按住ctrl和鼠标调节代码字体的大小啦&#xff01; 如果有用&#xff0c;记得给我来个赞~ 谢啦&#xff01;

【性能测试】loadrunner12.55--知识准备

1.0. 前言 ​ 在性能测试中&#xff0c;牵扯到了许多比较杂的知识点&#xff0c;这里将给大家说一下&#xff0c;loadrunner性能测试前需要做的一些准备&#xff0c;本节中我们将先从性能测试的一些术语入手&#xff0c;再到HTTP的一些知识&#xff0c;最后导我们loadrunner12…

应用多元统计分析--多元数据的直观表示(R语言)

例1.2 为了研究全国31个省、市、自治区2018年城镇居民生活消费的分布规律&#xff0c;根据调查资料做区域消费类型划分。 指标&#xff1a; 食品x1&#xff1a;人均食品支出(元/人) 衣着x2&#xff1a;人均衣着商品支出(元/人) 居住x3&#xff1a;人均居住支出(元/人) 生活x4…

RabbitMQ实战学习

RabbitMQ实战学习 文章目录 RabbitMQ实战学习RabbitMQ常用资料1、安装教程2、使用安装包3、常用命令4、验证访问5、代码示例 一、RabbitMQ基本概念1.1. MQ概述1.2 MQ 的优势和劣势1.3 MQ 的优势1. 应用解耦2. 异步提速3. 削峰填谷 1.4 MQ 的劣势1.5 RabbitMQ 基础架构1.6 JMS 二…

Java配置49-nginx 反向代理 sftp 服务器

1. 背景 后端服务需要通过部署在跳板机上的 nginx 访问一个外网的 SFTP 服务器。 2. 方法 nginx从 1.9.0 开始&#xff0c;新增加了一个stream模块&#xff0c;用来实现四层协议的转发、代理或者负载均衡等。 首先检查 nginx 版本信息及是否安装了 stream 模块。 进入 ngi…

React入门之React_使用es5和es6语法渲染和添加class

React入门 //react的核心库 <script src"https://cdn.jsdelivr.net/npm/react17/umd/react.development.js"></script> //react操作dom的核心库&#xff0c;类似于jquery <script src"https://cdn.jsdelivr.net/npm/react-dom17/umd/react-dom.…

USB-C接口:办公新宠,一线连接笔记本与显示器

USB-C接口如今已成为笔记本与显示器连接的优选方案。无需担心正反插错&#xff0c;支持雷电4和DP视频信号输出&#xff0c;高速数据传输&#xff0c;还有最高100W的快充功能&#xff0c;真是方便又实用&#xff01; 一线连接&#xff0c;多功能融合 通过这个接口&#xff0c;你…

Unity 游戏设计模式:工厂模式

本文由 简悦 SimpRead 转码&#xff0c; 原文地址 mp.weixin.qq.com 工厂模式是一种创建型设计模式&#xff0c;它提供了一种封装对象实例化过程的方式&#xff0c;使得客户端代码与具体类的实现解耦。 在 C# 的游戏设计中&#xff0c;模式有以下作用&#xff1a; 对象的创建…

Keepalived介绍、架构和安装

Keepalived介绍、架构和安装 文章目录 Keepalived介绍、架构和安装1.Keepalived&#xff08;高可用性服务&#xff09;1.1 Keepalived介绍1.2 Keepalived 架构1.3 Keepalived 相关文件 2.Keepalived安装2.1 主机初始化2.1.1 设置网卡名和ip地址2.1.2 配置镜像源2.1.3 关闭防火墙…

mongo之常用数据库操作

目录 一、准备环境 二、日常记录及执行示范 连接数据库查询版本查询表总数模糊查询(使用正则)查询文档中数据条数排序大于等于查询有哪些库时间查询不在条件内的查询复制数据更新字段名称删除数据库 四、高阶查询 五、备份迁移数据库 总结 一、准备环境 借鉴&#xff1a;…

模型选择与评估

&#x1f6a9; 机器学习的一般流程包括&#xff1a;数据集的准备与预处理、搭建模型、模型训练、模型评估与应用。 在现实任务中&#xff0c;我们往往有多种学习算法可供选择&#xff0c;甚至对同一个学习算法&#xff0c;当使用不同的参数配置时&#xff0c;也会产生不同的模型…

模块整理!YOLOv9中的“Silence”、“RepNCSPELAN4”、“ADown”、“CBLinear”创新模块汇总!

代码链接&#xff1a;https://github.com/WongKinYiu/yolov9/tree/main 论文链接&#xff1a;YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 大量文字及图片来袭&#xff01; 本文整理了YOLOv9中的创新模块&#xff0c;附代码和结构图&a…