藍橋杯:日期統計

文章目錄

  • 問題描述
  • 解法一遞歸
  • 解法二:暴力破解

問題描述

在這里插入圖片描述

首先我們要了解什么是子序列,就是一個序列之中可以忽略元素但是不能改變順序之后獲得的序列就叫做子序列。
如"123"就是"11234"的子序列而不是"11324"的子序列

解法一遞歸

#include <iostream>
#include<vector>
#include<algorithm>
#include<list>
#include<map>
#include<set>
#include<queue>
#include<string>
bool vis[202400000];
int pp[100] = {5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7,5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9,2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3,8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6,1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3
};
using namespace std;
int ans = 0;
bool checkd(int date) {if (vis[date])return false;vis[date] = 1;int date1 = date / 100%100;int date2 = date % 100;if (date1 > 12 || date1 < 1)return false;if (date1 == 1 || date1 == 3 || date1 == 5 || date1 == 7 || date1 == 8 || date1 == 10 || date1 == 12) {if (date2 <= 31 && date2 >= 1)return true;}else if (date1 == 2) {if (date2 <= 28&& date2 >= 1)return true;}else {if (date2 <= 30 && date2 >= 1)return true;}return false;
}
void dfs(int pos, int k, int date) {if (k == 8) {if (checkd(date)) {ans++;};return;}if (pos > 99) {return;}if (pp[pos] == 2 && k == 0 || pp[pos] == 0 && k == 1 || pp[pos] == 2 && k == 2 || pp[pos] == 3 && k == 3 ||pp[pos] <= 1 && k == 4 || pp[pos] <= 9 && k == 5 || pp[pos] <= 3 && k == 6 || pp[pos] <= 9 && k == 7){dfs(pos + 1, k + 1, date * 10 + pp[pos]);}dfs(pos + 1, k, date);
}
int main()
{dfs(0, 0, 0);cout << ans;return 0;
}

首先我們創建函數dfs(),pos代表數組位置,k代表位數,date表示當前的日期,其中date * 10 + pp[pos]是保存當前日期,我們迭代到位數k==8 return但是要檢查date是否合法

因為date有可能出現13,14之類的寫一個checkd函數如果查到合法ans++,bool vis是檢查日期是否重復的函數。 完成這一位搜索之后dfs(pos + 1, k, date);,直到pos>99 return

在這里插入圖片描述

解法二:暴力破解

解法二直接窮舉2023所有的日期,看序列中有沒有,這樣就不要判斷重復,也不用判斷是否合法,直接從第一個位置到最后一個位置,輸出ans就可以,代碼也會少很多


#include <bits/stdc++.h>
#include<string>
#include<vector> 
using namespace std;int main()
{int day[] = { 1,31,28,31,30,31,30,31,31,30,31,30,31 };int ans = 0;int arr[100] = {5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7,5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9,2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3,8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6,1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3};for (int i = 1; i <= 12; i++) {for (int j = 1; j <= day[i]; j++) {int date[] = { 1,2,0,2,3,i / 10,i % 10,j / 10,j % 10 };int	id = 1;for (int c = 0; c < 100; c++){if (arr[c] == date[id]) {id++;}if (id > 8) {ans++;break;}}}}cout << ans;return 0;
}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75966.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

藍橋杯 C/C++ 組歷屆真題合集速刷(一)

一、1.單詞分析 - 藍橋云課 &#xff08;模擬、枚舉&#xff09;算法代碼&#xff1a; #include <bits/stdc.h> using namespace std;int main() {string s;cin>>s;unordered_map<char,int> mp;for(auto ch:s){mp[ch];}char result_charz;int max_count0;fo…

重塑知識的引擎:人工智能如何改變知識的生產與傳播

一、引言&#xff1a;知識的邊界正在被人工智能重構 千百年來&#xff0c;人類對于“知識”的獲取方式一直遵循著某種路徑依賴&#xff1a;感知現實 → 歸納總結 → 文字表達 → 教育傳承 → 學術沉淀。這一過程復雜而緩慢&#xff0c;需要經過代際的努力才能實現知識的積累與…

list的底層:

我們之前講解了list&#xff0c;今天我們來看一下list的底層&#xff1a; list底層是一個雙向帶頭循環的鏈表&#xff0c;之前我們學習數據結構的時候&#xff0c;我們就學過。 迭代器的封裝&#xff1a; 我們看這個圖片&#xff0c;我們的鏈表的指針可以達到鏈表的迭代器能力…

遵循IEC62304YY/T0664:確保醫療器械軟件生命周期合規性

一、EC 62304與YY/T 0664的核心定位與關系 IEC 62304&#xff08;IEC 62304&#xff09;是國際通用的醫療器械軟件生命周期管理標準&#xff0c;適用于所有包含軟件的醫療器械&#xff08;如嵌入式軟件、獨立軟件、移動應用等&#xff09;&#xff0c;其核心目標是確保軟件的安…

【next函數python】`next()`函數

在Python中&#xff0c;next()函數結合生成器表達式用于高效地查找序列中第一個符合條件的元素。以下是如何理解和編寫類似代碼的步驟&#xff1a; 1. 生成器表達式 生成器表達式&#xff08;如 (e for e in energy3 if e ! 0)&#xff09;是一種惰性計算的迭代結構。它不會一…

[創業之路-364]:穿透表象:企業投資的深層邏輯與誤區規避

前言&#xff1a; 透過現象看本質 企業一生與人生相似 看企業如同看人 三歲看大&#xff0c;七歲看老 三十年河東&#xff0c;三十年河西 企業也有品行、文化、氣質、性格、賺錢、生命周期與賺錢曲線 投資公司的目的是未來賺錢&#xff0c;賺未來賺錢。投資創業中的企業主要看…

【C++】Stack Queue 仿函數

&#x1f4dd;前言&#xff1a; 這篇文章我們來講講STL中的stack和queue。因為前面我們已經有了string、vector和list的學習基礎&#xff0c;所以這篇文章主要關注一些stack和queue的細節問題&#xff0c;以及了解一下deque&#xff08;縫合怪&#xff09;和priority_queue &am…

[實戰] 天線陣列波束成形原理詳解與仿真實戰(完整代碼)

天線陣列波束成形原理詳解與仿真實戰 1. 引言 在無線通信、雷達和聲學系統中&#xff0c;波束成形&#xff08;Beamforming&#xff09;是一種通過調整天線陣列中各個陣元的信號相位和幅度&#xff0c;將電磁波能量集中在特定方向的技術。其核心目標是通過空間濾波增強目標方…

深圳漫云科技戶外公園實景兒童劇本殺小程序:開啟親子互動新紀元

在親子娛樂需求日益增長的當下&#xff0c;深圳漫云科技推出的戶外公園實景兒童劇本殺小程序&#xff0c;憑借其創新玩法與豐富功能&#xff0c;為親子家庭帶來全新體驗。該小程序融合戶外探險、角色扮演與邏輯推理&#xff0c;不僅滿足孩子好奇心&#xff0c;更提升其思維能力…

HOW - 如何測試 React 代碼

目錄 一、使用 React 測試庫&#xff1a;testing-library/react二、使用測試演練場&#xff1a;testing-playground.com三、使用 Cypress 或 Playwright 進行端到端測試四、使用 MSW 在測試中模擬網絡請求 一、使用 React 測試庫&#xff1a;testing-library/react testing-li…

COBOL語言的網絡安全

COBOL語言與網絡安全&#xff1a;傳統語言的新挑戰 引言 COBOL&#xff08;Common Business-Oriented Language&#xff09;是一種早期編程語言&#xff0c;最初于1959年被開發出來&#xff0c;主要用于商業、金融和行政系統的處理。盡管年代久遠&#xff0c;COBOL在大型機系…

通過世界排名第一的免費開源ERP,構建富有彈性的智能供應鏈

概述 現行供應鏈模式的結構性弱點凸顯了對整個行業進行重塑的必要性。正確策略和支持可以幫助您重塑供應鏈&#xff0c;降低成本&#xff0c;實現業務轉型。開源智造&#xff08;OSCG&#xff09;所推出的Odoo免費開源ERP解決方案&#xff0c;將供應鏈轉化為具有快速響應能力的…

Android 開發中compileSdkVersion 和 targetSdkVersion

在 Android 開發中&#xff0c;compileSdkVersion 和 targetSdkVersion 是 build.gradle 文件中的兩個關鍵配置&#xff0c;它們分別控制應用的編譯行為和運行時兼容性。以下是它們的詳細區別和用途&#xff1a; 1. compileSdkVersion&#xff08;編譯版本&#xff09; 作用&a…

Qt QComboBox 下拉復選多選

Qt 中&#xff0c;QComboBox 默認只支持單選&#xff0c;但實際使用過程中&#xff0c;我們經常會碰到需要多選的情況&#xff0c;但是通過一些直接或者曲折的方法還是可以實現的。 1、通過 QListWidget 間接實現 這種方式是網上搜索最多的一種方式&#xff0c;也是相對來說比…

Selenium自動化:玩轉瀏覽器,搞定動態頁面爬取

嘿&#xff0c;各位爬蟲愛好者和自動化達人們&#xff01;是不是經常遇到這種情況&#xff1a;信心滿滿地寫好爬蟲&#xff0c;requests一把梭&#xff0c;結果抓下來的HTML里&#xff0c;想要的數據空空如也&#xff1f;定睛一看&#xff0c;原來數據是靠JavaScript動態加載出…

天梯賽 L2-023 圖著色問題

使用vector<vector<int>> g(N)去存儲邊&#xff0c;然后每次判斷每個節點的鄰節點是不是相同的顏色&#xff0c;需要注意的是不同的顏色一定需要為K種&#xff0c;不能多也不能少。 #include<bits/stdc.h> using namespace std; int main(){int n,m,k;cin&g…

在ubuntu24上裝ubuntu22

實驗室上有一臺只裝了ubuntu24的電腦&#xff0c;但是項目要求在22上進行 搞兩個ubuntu系統&#xff01; 步驟一&#xff1a;制作22的啟動盤 步驟二&#xff1a;進入bios安裝界面 步驟三&#xff1a;選擇try or install ubuntu 步驟四&#xff1a;選擇try ubuntu 步驟五&…

【PVR Review】《Review of Deep Learning Methods for Palm Vein Recognition》

[1]譚振林,劉子良,黃藹權,等.掌靜脈識別的深度學習方法綜述[J].計算機工程與應用,2024,60(06):55-67. 文章目錄 1、Background and Motivation2、數據采集3、掌脈圖像預處理3.1、ROI提取算法3.2、圖像濾波與增強 4、掌脈識別算法4.1、基于深度學習的方法4.2、其他方法 5、融合識…

【CSP】202403-1詞頻統計

文章目錄 算法思路1. 數據結構選擇2. 輸入處理3. 統計出現的文章數4. 輸出結果 代碼示例代碼優化 樣例輸入 4 3 5 1 2 3 2 1 1 1 3 2 2 2 2 3 2樣例輸出 2 3 3 6 2 2算法思路 1. 數據結構選擇 vector<int>&#xff1a;用于存儲每篇文章的單詞列表&#xff08;可能包含…

Docker基礎1

本篇文章我將從系統的知識體系講解docker的由來和在linux中的安裝下載 隨后的文章會介紹下載鏡像、啟動新容器、登錄新容器 如需轉載&#xff0c;標記出處 docker的出現就是為了節省資本和服務器資源 當企業需要一個新的應用程序時&#xff0c;需要為它買臺全新的服務器。這樣…