算法基础(三)(模拟)

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"

深基杨辉三角

题目描述 给出 n(n≤20)&#xff0c;输出杨辉三角的前 n 行。 如果你不知道什么是杨辉三角&#xff0c;可以观察样例找找规律。 输入格式 无 输出格式 无 输入输出样例 输入 #1 6 输出 #1 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 解 #include<iostream&g…

深基蛇形方阵

题目描述 给出一个不大于 9 的正整数 n&#xff0c;输出 nn 的蛇形方阵。 从左上角填上 1 开始&#xff0c;顺时针方向依次填入数字&#xff0c;如同样例所示。注意每个数字有都会占用 3 个字符&#xff0c;前面使用空格补齐。 输入格式 输入一个正整数 nn&#xff0c;含义…

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

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

TypeScript04:其他常用类型

一、联合类型 联合类型&#xff1a;多种类型任选其一&#xff0c;配合类型保护进行判断。 类型保护&#xff1a;当对某个变量进行类型判断之后&#xff0c;在判断的语句块中便可以确定它的 确切类型&#xff0c; typeof 可以触发基本类型的类型保护。 let name:string | und…

harbor配置目录被误删后救援

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

c# string.Empty与“ “

背景&#xff1a; 在项目中加了几行代码&#xff0c;结果程序就莫名奇妙崩掉了。初步判断是有个 仔细分析了一下&#xff0c;添加的代码&#xff0c;用到 string.Empty来清空原来string变量中的值。然后就仔细研究了一下 string.Empty 和 “” 之间的区别 Empty是string类中的…

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

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

python对接阿里云2.0SDK对接短信发送代码例子

由于官方推荐使用2.0 所以咱们与时俱进 代码部分 from alibabacloud_dysmsapi20170525.client import Client as Dysmsapi20170525Client from alibabacloud_tea_openapi import models as open_api_models from alibabacloud_dysmsapi20170525 import models as dysmsapi_20…

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 …

旧项目集成阿里云滑动验证码(web和H5方式)

简述 旧项目集成阿里云滑动验证码(web和H5方式) 适用于servlet和HTML项目,VUE + springboot请看另一篇文档 前情提示 系统: 一说 部分截图、链接等因过期、更换域名、MD语法等可能不显示,可联系反馈(备注好博文地址),谢谢❤带有​​#号、删除线、不操作、不执行​…

【力扣hot100】刷题笔记Day16

前言 干活炼丹闲暇之余来刷刷题&#xff01;NoNo应该说刷题闲暇才炼丹 994. 腐烂的橘子 - 力扣&#xff08;LeetCode&#xff09; BFS队列 参考橘子哥的题解 class Solution:def orangesRotting(self, grid: List[List[int]]) -> int:row, col, time len(grid), len(grid…

双非二本找实习前的准备day2

学习目标&#xff1a; 每天2-3到简单sql&#xff08;刷完即止&#xff09;&#xff0c;每天复习代码随想录上的题目3道算法&#xff08;时间充足可以继续&#xff09;&#xff0c;背诵的八股的问题也在这里记录了 今日碎碎念&#xff1a; SQL有些题用到的知识感觉不会出现在…

小狐狸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;转化为大写主程序中断处理程序…

vue-router4 (二) 引入并配置路由

1.在项目src/router/index.ts 文件夹下配置路由&#xff1a; import { createRouter ,createWebHistory,RouteRecordRaw} from "vue-router"; //1.引入路由//3.routes配置项 const routes:Array<RouteRecordRaw> [{path:"/", //路径name:"…

IDEA利用鼠标调整字体大小

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

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

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

c++学习:继承

目录 特点 基本用法 实例 基类&#xff1a;Animal 派生类&#xff1a;Lion 派生类&#xff1a;Elephant 派生类&#xff1a;Bird 使用这些类 权限对继承的影响 示例 基类构造函数 示例 继承是面向对象编程&#xff08;OOP&#xff09;中的一个核心概念&#xff0c;…