当前位置: 首页 > news >正文

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;
}

相关文章:

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

目录 构造 构造的基础概念&#xff1a; 模拟 练习1&#xff1a;扫雷 练习2&#xff1a;灌溉 练习3&#xff1a;回文日期 构造 构造的基础概念&#xff1a; 构造算法是一种用于解决特定问题的算法设计方法。在C语言中&#xff0c;构造算法通常涉及到创建一个函数或类来实…...

C++ 和 C#的区别

如是我闻&#xff1a; C#&#xff08;发音为 “C sharp”&#xff09;和C是两种流行的编程语言&#xff0c;它们各有特点和用途。下面是这两种语言的一些主要区别&#xff1a; 设计理念和用途: C: 是一种多范式编程语言&#xff0c;支持过程化编程、面向对象编程、泛型编程等。…...

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…...

SkyWalking之APM无侵入可观测原理分析

一、 简介&#xff08;为什么需要用到可观测能力&#xff09; 随着微服务的开发模式的兴起&#xff0c;早期的单体架构系统已拆分为很多的子系统&#xff0c;各个子系统封装为微服务&#xff0c;各服务间通过HTTP协议RESET API或者RPC协议进行调用。 在单体服务或者微服务较少的…...

Missing artifact org.yaml:snakeyaml:jar:1.29

关于导入本地maven项目pom.xml出现missing artifact org....报错处理 环境变量配置maven&#xff0c;eclipse中配置maven&#xff0c;重启eclipse。...

三opencv源码解压及环境变量配置

1.双击opencv-3.4.6-vc14-vc15.exe 2.选择解压的路径&#xff0c;点击【extract】 3.设计环境变量...

vue实时监控视频播放的进度,并在播放80%位置触发相应操作

video标签&#xff1a;播放时触发canplay事件 <video:src"filePath"controlsv-if"filePrefix mp4 || filePrefix avi"canplay"getVideoDur()"id"myVideo"class"preview"></video>canplay触发的方法&#xff…...

HTML+CSS滚动条样式如何单独给firefox设置 scrollbar-width: none;,而不影响其他浏览器

要在Firefox中单独设置滚动条样式,你可以使用​​@-moz-document​​规则。这个规则允许你为特定的浏览器或浏览器引擎应用样式。 下面是一个例子,演示如何在Firefox中隐藏滚动条: @-moz-document url-prefix() {/* 在这里添加只对Firefox生效的样式 */body {scrollbar-wi…...

《Go 简易速速上手小册》第2章:控制结构与函数(2024 最新版)

文章目录 2.1 条件语句:决策的艺术2.1.1 基础知识讲解2.1.2 重点案例:用户角色权限判断实现用户角色权限判断扩展功能实现代码功能扩展:添加或删除用户2.1.3 拓展案例 1:成绩等级判断实现成绩等级判断功能实现代码扩展功能:详细反馈...

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(一)

随着社会的发展和科技的进步&#xff0c;视频监控系统在各个领域的应用越来越广泛&#xff0c;视频云平台建设已经成为了行业数字化转型的重要一环。公安网视频汇聚联网共享云的建设需要充分考虑技术、架构、安全、存储、计算等多方面因素&#xff0c;以确保平台的稳定性和可用…...

HQYJ 2024-2-21 作业

复习课上内容&#xff08;已完成&#xff09;结构体字节对齐&#xff0c;64位没做完的做完&#xff0c;32位重新都做一遍&#xff0c;课上指定2字节对齐的做一遍&#xff0c;自己验证&#xff08;已完成&#xff09;两种验证大小端对齐的代码写一遍复习指针内容&#xff08;已完…...

LeetCode每日一题【283. 移动零】

题目&#xff1a; 思路&#xff1a; 双指针&#xff0c;i和j。当i和j所指元素都不为0时&#xff0c;他们同时向后走&#xff0c;当j所指元素为0时&#xff0c;只走j&#xff0c;i固定。这样下来&#xff0c;i就指向最后一个非0元素的下一个位置&#xff0c;j就指向那些0元素之…...

CF1200E Compress Words

题目描述 Amugae has a sentence consisting of n words. He want to compress this sentence into one word. Amugae doesnt like repetitions, so when he merges two words into one word, he removes the longest prefix of the second word that coincides with a suffix…...

ip https证书推荐

公网IP地址是每个连接到互联网的设备所必需的标识。公网IP地址是用于在互联网上唯一标识一个设备的IP地址&#xff0c;它由一组由四个数字组成的字符串组成&#xff0c;每个数字在0到255之间。随着互联网的发展&#xff0c;只有公网IP地址的站点也开始重视传输信息安全&#xf…...

大气颗粒物与VOCs PMF源解析技术应用

目前&#xff0c;大气颗粒物和臭氧污染成为我国亟待解决的环境问题。颗粒物和臭氧污染不仅对气候和环境有重要影响&#xff0c;而且对人体健康有严重损害。而臭氧的前体物之一为挥发性有机物&#xff08;VOCs&#xff09;。为了高效、精准地治理区域大气颗粒物和臭氧污染&#…...

VSCODE中使用Vue3教程

VUE介绍 Vue.js is a popular JavaScript library for building web application user interfaces and Visual Studio Code has built-in support for the Vue.js building blocks of HTML, CSS, and JavaScript. For a richer Vue.js development environment, you can insta…...

Mac M2芯片配置PHP环境

Mac M2芯片配置PHP环境 1. XAMPP2. PHPBrew(PHP版本管理)安装php7.4.33版本 3. 直接使用homebrew 安装php环境参考 1. XAMPP 官网地址 https://www.apachefriends.org/ 安装 安装完成 web server打开后&#xff0c;在打开localhost 成功&#xff01; 2. PHPBrew(PHP版本管…...

[嵌入式系统-25]:RT-Thread -12- 内核组件编程接口 - 网络组件 - HTTP编程

目录 一、HTTP编程概述 1.1 概述 1.2 HTTP 服务器和 HTTP 客户端 二、HTTP Client 2.1 如何配置HTTP Client 2.2 HTTP Client代码实例1&#xff1a;socket发送http报文 2.3 HTTP Client代码实例2&#xff1a;httpc_xx接口收发HTTP报文 2.3.1 接口函数描述 2.3.2 代码实…...

一个服务器实现本机服务互联网化

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 一个服务器实现本机服务互联网化 前言痛点关于中微子代理实战演练搭建服务端搭建客户端服务端配置代理实现 前言 在数字世界的网络战场上&#xff0c;中微子代理就像是一支潜伏在黑暗中的数字特工队&…...

django配置视图并与模版进行数据交互

目录 安装django 创建一个django项目 项目结构 创建视图层views.py 写入视图函数 创建对应视图的路由 创建模版层 配置项目中的模版路径 创建模版html文件 启动项目 浏览器访问结果 安装django pip install django 创建一个django项目 这里最好用命令行完成&#xf…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...