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.hqwc.cn/news/484811.html

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

相关文章

PMP考试100个主要知识点

1.一个项目在启动阶段会进行量级估算&#xff0c;准确范围是-50至100%。2000版的量级估算准确度为&#xff1a;-25%到75%。 2.质量控制通常先于范围确认执行&#xff0c;但这两个过程可以并列进行参考 3.Cost-plus-fixed-fee(CPFF)成本加固定费用合同。成本补偿型合同包括成本加…

Vue 封装的 axios 类的使用(小bug 改进)

http类 import { baseUrl } from "./config"; //引入config.js中的配置 import axios from "axios"; //引入axios import qs from "querystringify"; //form-Data请求时的工具类class Http{axios null;lastRequestIntercept null…

华为OD机试真题-最大坐标值-2023年OD统一考试(C卷)--Python--开源

题目&#xff1a; 考察内容&#xff1a; for if 异常处理细节&#xff08;负数-1&#xff0c; 指令为0&#xff0c;且幸运数为0&#xff0c;不进不退&#xff09; 代码&#xff1a; """ 题目分析&#xff1a; 异常处理&#xff1a;try -except 当指令为0&am…

【OpenFeign常用配置】

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

二.西瓜书——线性模型、决策树

第三章 线性模型 1.线性回归 “线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记. 2.对数几率回归 假设我们认为示例所对应的输出标记是在指数尺度上变化&#xff0c;那就可将输出标记的对数作为线性模型逼近的目标&#xff0c;即 由此&…

30个AI变现案例,太全了,赶紧实操起来

精心整理了30个AI变现案例&#xff0c;每一个都可以作为一个完整的副业去实践&#xff0c;AI时代已经来了&#xff0c;所有不甘于现状的朋友&#xff0c;都应该去下场&#xff0c;先把手弄脏&#xff0c;不要怕&#xff0c;实践起来&#xff01; 1&#xff0e;【副业创业】AI剧…

Spring6学习技术|Junit

学习材料 尚硅谷Spring零基础入门到进阶&#xff0c;一套搞定spring6全套视频教程&#xff08;源码级讲解&#xff09; Junit 背景 背景就是每次Test都要重复创建容器&#xff0c;获取对象。就是ApplicationContext和getBean两个语句。通过Spring整合Junit&#xff0c;可以…

【stm32】hal库学习笔记-UART/USART串口通信(超详细!)

【stm32】hal库学习笔记-UART/USART串口通信 hal库驱动函数 CubeMX图形化配置 导入LCD.ioc RTC设置 时钟树配置 设置LSE为RTC时钟源 USART设置 中断设置 程序编写 编写主函数 /* USER CODE BEGIN 2 */lcd_init();lcd_show_str(10, 10, 16, "Demo12_1:USART1-CH340&q…

Linux 上安装及卸载JDK(包含yum方式)

一、 删除JDK 1、先输入java -version查看是否安装了JDK [rootiZbp117bkiezirqkean6g3Z java-11-openjdk-11.0.21.0.9-2.0.3.al8.x86_64]# java -version openjdk version "11.0.21" 2023-10-17 LTS OpenJDK Runtime Environment (Red_Hat-11.0.21.0.9-1) (build 1…

2024牛客(4)K题

登录—专业IT笔试面试备考平台_牛客网 using i64 long long; using ll long long; constexpr ll M 1e9 7; template<class Info> struct SegmentTree {int n;std::vector<Info> info;SegmentTree() : n(0) {}SegmentTree(int n_, Info v_ Info()) {init(n_, …

堆的结构实现与应用

目录 前言: 1.认识堆 a.如何认识堆&#xff1f; b.大根堆与小根堆 c.堆应用的简单认识 2.堆的结构与要实现的功能 3.向上调整算法 4.向下调整算法 5.向堆插入数据并建堆 6.堆的大小 7.堆的判空 8.取堆顶数据 9.删除堆顶数据 10.向上调整时间复杂度 11.向下调整时…

流式存储音频/视频

目录 流式存储音频/视频 1.1 具有元文件的万维网服务器 1.2 媒体服务器 1.3 实时流式协议 RTSP 使用 RTSP 的媒体服务器的工作过程 流式存储音频/视频 “存储”音频/视频文件不是实时产生的&#xff0c;而是已经录制好的&#xff0c;通常存储在光盘或硬盘中。 传统浏览器…