c++:蓝桥杯的基础算法2(构造,模拟)+练习巩固

目录

构造

构造的基础概念:

模拟

练习1:扫雷 

练习2:灌溉 

 练习3:回文日期


构造

构造的基础概念:

构造算法是一种用于解决特定问题的算法设计方法。在C++语言中,构造算法通常涉及到创建一个函数或类来实现特定的功能。以下是一个用C++语言详细介绍构造算法的示例:

#include <iostream>
#include <vector>// 定义一个函数来实现构造算法
void constructAlgorithm(std::vector<int>& nums) {int n = nums.size();// 在这里实现构造算法的具体逻辑for (int i = 0; i < n; i++) {nums[i] = i * i;}
}int main() {// 创建一个包含一定数量元素的向量std::vector<int> nums = {1, 2, 3, 4, 5};// 调用构造算法函数来处理向量中的元素constructAlgorithm(nums);// 输出处理后的向量元素for (int i = 0; i < nums.size(); i++) {std::cout << nums[i] << " ";}return 0;
}

在上面的示例中,我们定义了一个名为constructAlgorithm的函数来实现构造算法的逻辑。在main函数中,我们创建了一个包含一定数量元素的向量,并调用constructAlgorithm函数来处理向量中的元素。最后,我们输出处理后的向量元素。

通过这种方式,我们可以使用C++语言来实现构造算法,解决特定问题并实现所需的功能。


模拟

模拟算法是一种通过模拟真实世界情况来解决问题的方法。在C++中,可以通过编写代码来模拟算法的思路。

以下是一个简单的示例,介绍如何用C++代码实现一个简单的模拟算法:

#include <iostream>int main() {// 模拟一个简单的情况,假设有5个人排队等待进入电影院int queue[5] = {1, 2, 3, 4, 5};// 模拟每个人进入电影院的过程for (int i = 0; i < 5; i++) {std::cout << "Person " << queue[i] << " enters the cinema." << std::endl;}// 模拟电影播放结束,人们陆续离开电影院for (int i = 0; i < 5; i++) {std::cout << "Person " << queue[i] << " leaves the cinema." << std::endl;}return 0;
}

在这个示例中,我们模拟了一个简单的场景:5个人排队等待进入电影院,然后陆续进入电影院观影,最后陆续离开电影院。通过这个简单的例子,展示了如何用C++代码实现模拟算法的思路。在实际应用中,可以根据具体问题的情况,编写相应的模拟算法代码。

练习1:扫雷 

1.扫雷 - 蓝桥云课 (lanqiao.cn)

答案和思路: 

#include<bits/stdc++.h>
using namespace std;
int n,m;
int arr[105][105],ans[105][105];
int main()
{// 输入n和m的值cin>>n>>m;// 输入矩阵arr的值for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>arr[i][j];}}// 计算每个位置周围的1的个数for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(arr[i][j]==1){ans[i][j]=9; // 如果当前位置为1,则置为9continue;}for(int _i=max(0,i-1);_i<=min(n,i+1);_i++){for(int _j=max(0,j-1);_j<=min(m,j+1);_j++){if(arr[_i][_j]==1) ans[i][j]++; // 统计周围1的个数}}}}// 输出ans矩阵for(int i=0;i<n;i++){for(int j=0;j<m;j++){cout<<ans[i][j]<<" ";}cout<<endl;}return 0;
}

练习2:灌溉 

1.灌溉 - 蓝桥云课 (lanqiao.cn)

思路和代码:

思路:定义两个数组,用1记录初始水方块a,根据题意跟新对应水方块,用更新完的水方块b覆盖a,再次迭代,直到次数结束,在规定范围内统计水方块个数。
#include<bits/stdc++.h>
using namespace std;
int main()
{int n, m; // 定义矩阵的行数和列数cin >> n >> m; // 输入矩阵的行数和列数int t; // 定义初始时有多少个位置为1cin >> t; // 输入初始时有多少个位置为1int a[105][105], b[105][105]; // 定义两个矩阵a和b// 输入初始位置为1的坐标for (int i = 1; i <= t; i++){int x, y;cin >> x >> y;a[x][y] = 1; // 将指定位置置为1}int k; // 定义迭代次数cin >> k; // 输入迭代次数while (k--){// 更新矩阵bfor (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][j - 1] = b[i][j + 1] = b[i + 1][j] = 1;}}}// 更新矩阵afor (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){a[i][j] = b[i][j];}}}// 统计最终有多少个位置为1int ans = 0;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (a[i][j] == 1) ans++;}}// 输出最终结果cout << ans << endl;return 0;
}

 特别注意:数组从a[1][1]开始传入,i=0和j=0的位置空出,即使更新的时候溢出规定范围也没关系,注意统计时的边界就行。

 练习3:回文日期

3.回文日期 - 蓝桥云课 (lanqiao.cn)

思路和代码:

#include<bits/stdc++.h>
using namespace std;// 判断是否为闰年
bool isleap(int y)
{return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
}// 检查日期是否合法
bool check(int year, int month, int day)
{if (month > 12 || month == 0) return false;if (month == 2){if (isleap(year) && day > 29) return false;if (!isleap(year) && day > 28) return false;}if (day > 31) return false;if (month == 4 || month == 6 || month == 9 || month == 11){if (day > 30) return false;}return true;
}int main()
{int n;cin >> n;int a, b, c, d, e, f, g, h;int year, month, day;bool flag = false;for (int i = n + 1; i <= 99999999; i++){year = i / 10000;month = (i % 10000) / 100;day = i % 100;a = i % 10;b = (i / 10) % 10;c = (i / 100) % 10;d = (i / 1000) % 10;e = (i / 10000) % 10;f = (i / 100000) % 10;g = (i / 1000000) % 10;h = (i / 10000000) % 10;if (a == h && b == g && c == f && d == e && flag == false){if (check(year, month, day)){cout << i << endl;flag = true;}}if (a == h && b == g && c == f && d == e && a == c && b == d){if (check(year, month, day)){cout << i << endl;break;}}}return 0;
}

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

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

相关文章

ARM服务器上部署zookeeper集群

由于ARM服务器上部署zookeeper集群,会存在加载不到主类问题,现在把遇到的问题进行总结下,问题如下: [rootnode206 apache-zookeeper-3.5.10]# bin/zkServer.sh start ZooKeeper JMX enabled by default Using config: /data1/software/apache-zookeeper-3.5.10/bin/../conf/…

四、Burpsuite工具之proxy模块详解-intercept功能

前言&#xff1a; 过了一个年&#xff0c;感觉好久都没有更新了&#xff0c;今天就从burpsuite的更新开始吧。 前面已经说过了burpsuite的安装和proxy代理的配置&#xff0c;今天说一下proxy模块中非常有用的intercept功能。 intercept功能介绍&#xff1a; intercept是拦截…

Spring之AOP源码解析(中)

前言 在上一篇文章中,我们讲解了Spring中那些注解可能会产生AOP动态代理,我们通过源码发现,完成AOP相关操作都和ProxyFactory这个类有密切关系,这一篇我们将围绕这个类继续解析 演示 作用 ProxyFactory采用策略模式生成动态代理对象,具体生成cglib动态代理还是jdk动态代理,…

APP的UI自动化demo(appium+java)

文章目录 appium连接手机java代码实现-第一版第二版-接入testng和隐式等待显示等待 appium连接手机 准备工作 1、查看连接手机模拟器是否连接成功&#xff0c;获取设备名称 执行命令&#xff1a;adb devices 2、查看android内核版本号—>paltformVersion 执行命令&#xf…

Postman接口关联实战解析

在使用postman做接口测试时&#xff0c;有时候后面的接口需要获取前面接口的某一个返回值做为请求参数&#xff0c;这时就可以使用关联。 如从A接口提取出a字段的值&#xff0c;供B接口的b字段使用。 一个接口的返回报文如下&#xff1a; {"retCode": "0&quo…

SwiftUI 集合视图(Grid)拖放交换 Cell 的极简实现

概览 自从 SwiftUI 横空出世那天起&#xff0c;小伙伴们都感受到了它惊人的简单与便捷。而在本课中&#xff0c;我们将会用一个小“栗子”更直观的让大家体验到它无与伦比简洁的描述性特质&#xff1a; 如上图所示&#xff0c;我们在 SwiftUI 中实现了 Grid 中拖放交换 Cell 的…

基于SpringBoot + Layui的社区物业管理系统

项目介绍 社区物业管理系统是基于java编程语言&#xff0c;springboot框架&#xff0c;idea工具&#xff0c;mysql数据库进行开发&#xff0c;本系统分为业主和管理员两个角色&#xff0c;业主可以登陆系统&#xff0c;查看车位费用信息&#xff0c;查看物业费用信息&#xff0…

2个wordpress优化SEO主题模板

SEO优化wordpress主题 简洁的SEO优化wordpress主题&#xff0c;效果好不好&#xff0c;结果会告诉你&#xff0c;适合SEO公司使用的主题。 https://www.jianzhanpress.com/?p2804 SEO优化海外WordPress主题 简洁的SEO优化海外服务商WordPress主题&#xff0c;为中国制造202…

HTTP REST 方式调用WebService接口(wsdl)

一、WebService接口正常使用SOAP协议调用&#xff0c;测试时常采用SoapUI软件调用&#xff0c;具体如下&#xff1a; 二、由于目前主流web服务逐渐转换为RESTful的形式&#xff0c;且SOAP协议的实现也是基于HTTP协议&#xff0c;故存在通过HTTP调用WebService接口的可能 2.1 …

Flink双流(join)

一、介绍 Join大体分类只有两种&#xff1a;Window Join和Interval Join Window Join有可以根据Window的类型细分出3种&#xff1a;Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 &#x1f338;Window 类型的join都是利用window的机制…

【OpenFeign常用配置】

OpenFeign常用配置 快速入门&#xff1a;1、引入依赖2、启用OpenFeign 实践1、引入依赖2、开启连接池功能3、模块划分4、日志5、重试 快速入门&#xff1a; OpenFeign是一个声明式的http客户端&#xff0c;是spring cloud在eureka公司开源的feign基础上改造而来。其作用及时基于…

C++ template-2

第 5 章 基础技巧 5.1 typename 关键字 关键字typename在C标准化过程中被引入进来&#xff0c;用来澄清模板内部的一个标识符代表的 是某种类型&#xff0c;而不是数据成员。考虑下面这个例子&#xff1a; template<typename T> class MyClass { public:void foo() {t…

Nginx -2

接着上文写 5.4.7 验证模块 需要输入用户名和密码 模块名称&#xff1a;ngx_http_auth_basic_module 访问控制基于模块 ngx_http_auth_basic_module 实现&#xff0c;可以通过匹配客户端资源进行限制 语法&#xff1a; Syntax: auth_basic string | off; Default: auth_ba…

威尔金森功分器基本原理学习笔记

威尔金森功分器基本原理 威尔金森功率分配器的功能是将输入信号等分或不等分的分配到各个输出端口&#xff0c;并保持相同输出相位。环形器虽然有类似功能&#xff0c;但威尔金森功率分配器在应用上具有更宽的带宽。微带形功分器的电路结构如图所示&#xff0c;其中&#xff0…

Vue图片浏览组件v-viewer,支持旋转、缩放、翻转等操作

Vue图片浏览组件v-viewer&#xff0c;支持旋转、缩放、翻转等操作 之前用过viewer.js&#xff0c;算是市场上用过最全面的图片预览。v-viewer&#xff0c;是基于viewer.js的一个图片浏览的Vue组件&#xff0c;支持旋转、缩放、翻转等操作。 基本使用 安装&#xff1a;npm安装…

费舍尔FISHER金属探测器探测仪维修F70

美国FISHER LABS费舍尔地下金属探测器&#xff0c;金属探测仪等维修&#xff08;考古探金银铜探宝等仪器&#xff09;。 费舍尔F70视听目标ID金属探测器&#xff0c;Fisher 金属探测器公司成立于1931年&#xff0c;在实验条件很艰苦的情况下&#xff0c;研发出了地下金属探测器…

【Python】实现一个类似于Glass2k的Windows窗口透明化软件

一 背景说明 网上看到一款Windows下的窗口透明化工具Glass2k&#xff08;Glass2k官网&#xff09;&#xff0c;可以简单地通过快捷键实现任意窗口的透明化&#xff0c;还挺方便的&#xff0c;想用Python自己实现一下类似的功能。 软件已经开源到&#xff1a;窗口透明化小工具开…

【Leetcode】889. 根据前序和后序遍历构造二叉树

文章目录 题目思路代码结果 题目 题目链接 给定两个整数数组&#xff0c;preorder 和 postorder &#xff0c;其中 preorder 是一个具有 无重复 值的二叉树的前序遍历&#xff0c;postorder 是同一棵树的后序遍历&#xff0c;重构并返回二叉树。 如果存在多个答案&#xff0c;…

CSS基础属性

【三】基础属性 【1】高度和宽度 &#xff08;1&#xff09;参数 width&#xff08;宽度&#xff09;&#xff1a;用于设置元素的宽度。可以使用具体的数值&#xff08;如像素值&#xff09;或百分比来指定宽度。 height&#xff08;高度&#xff09;&#xff1a;用于设置元…