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.pswp.cn/news/696893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696893.shtml
英文地址,請注明出處:http://en.pswp.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動態代理,…

算法提升——LeetCode第385場周賽總結

題目 統計前后綴下標對 I 給你一個下標從0開始的字符串數組words。 定義一個布爾函數isPrefixAndSuffix&#xff0c;它接受兩個字符串參數str1和str2&#xff1a; 當str1同時是str2的前綴&#xff08;prefix&#xff09;和后綴&#xff08;suffix&#xff09;時&#xff0c…

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

文章目錄 appium連接手機java代碼實現-第一版第二版-接入testng和隱式等待顯示等待 appium連接手機 準備工作 1、查看連接手機模擬器是否連接成功&#xff0c;獲取設備名稱 執行命令&#xff1a;adb devices 2、查看android內核版本號—>paltformVersion 執行命令&#xf…

MQL語言實現單元測試

文章目錄 一、單元測試是什么二、單元測試的過程三、為什么需要單元測試四、MQL測試代碼實現 一、單元測試是什么 單元測試是對軟件中最小可測單元&#xff08;如類或函數&#xff09;進行獨立驗證和檢查的過程。它是由開發工程師完成的&#xff0c;旨在確保每個單元的功能和邏…

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…

C# byte[]、struct、intptr、byte[]和byte*等的相互轉換

struct、byte[]互相轉換 //struct轉換為byte[] public static byte[] StructToBytes(object structObj) {int size Marshal.SizeOf(structObj);IntPtr buffer Marshal.AllocHGlobal(size);try{Marshal.StructureToPtr(structObj, buffer, false);byte[] bytes new byte[siz…

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…

【代碼隨想錄算法訓練營Day09】28.實現 strStr(); 459.重復的子字符串

文章目錄 Day 9 第四章 字符串part0228. 實現 strStr() &#xff08;本題可以跳過&#xff09;KMP 思路KMP 代碼 459.重復的子字符串 &#xff08;本題可以跳過&#xff09;字符串總結雙指針回顧 Day 9 第四章 字符串part02 今日任務 28.實現 strStr(); 459.重復的子字符串; 字…

題目:C++快速找到未知長度單鏈表的中間節點。普通方法和高級方法2種解題思路解析。

在數據結構的面試中&#xff0c;經常會出現這樣的問題&#xff1a;如何快速找到未知長度單鏈表的中間節點&#xff1f;通常&#xff0c;面試官會期待你提供兩種解法&#xff1a;一種是最基本的普通方法&#xff0c;另一種是更高效的 advanced 方法。本文將詳細介紹這兩種方法。…

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…