蓝桥杯 C/C++ 组历届真题合集速刷(一)

一、1.单词分析 - 蓝桥云课

(模拟、枚举)算法代码:

#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_char='z';int max_count=0;for(auto& entry:mp){if(entry.second>max_count){result_char=entry.first;max_count=entry.second;}else if (entry.second == max_count) {if (entry.first < result_char) {result_char = entry.first;}}}cout << result_char << endl;cout << max_count << endl;return 0;
}

 二、2.成绩统计 - 蓝桥云课

(模拟)算法代码: 

#include <bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;int simple=0,good=0;for(int i=0;i<n;i++){int score=0;cin>>score;if(score>=60){simple++;if(score>=85){good++;}}}double pass_rate=(double)simple/n*100;double good_rate=(double)good/n*100;printf("%d%%",(int)round(pass_rate));cout<<endl;printf("%d%%",(int)round(good_rate));return 0;
}

三、3.门牌制作 - 蓝桥云课

(模拟、枚举)算法代码: 

#include <bits/stdc++.h>
using namespace std;
int cnt;
int main()
{for(int i=1;i<=2020;i++){int tmp=i;while(tmp){if(tmp%10==2){cnt++;}tmp/=10;}}cout<<cnt<<endl;return 0;
}

四、4.数字三角形 - 蓝桥云课

(DFS)算法代码:(通过50%) 

#include<bits/stdc++.h>
using namespace std;int n;
vector<vector<int>> num;
int max_sum = 0;void dfs(int row, int col, int sum, int left_count, int right_count) {// 到达最后一行if (row == n - 1) {// 检查左右移动次数差是否不超过1if (abs(left_count - right_count) <= 1) {max_sum = max(max_sum, sum);}return;}// 向左下移动dfs(row + 1, col, sum + num[row + 1][col], left_count + 1, right_count);// 向右下移动dfs(row + 1, col + 1, sum + num[row + 1][col + 1], left_count, right_count + 1);
}int main() {cin >> n;num.resize(n,vector<int>(n,0));// 读取输入for (int i = 0; i < n; i++) {for (int j = 0; j <= i; j++) {cin >> num[i][j];}}// 从顶点开始DFSdfs(0, 0, num[0][0], 0, 0);cout << max_sum << endl;return 0;
}

 (动态规划)算法代码:(通过30%)

#include<bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;vector<vector<int>> num(n, vector<int>(n, 0));for (int i = 0; i < n; i++) {for (int j = 0; j <= i; j++) {cin >> num[i][j];}}// 从倒数第二层开始向上动态规划for (int i = n - 2; i >= 0; i--) {for (int j = 0; j <= i; j++) {num[i][j] += max(num[i + 1][j], num[i + 1][j + 1]);}}cout << num[0][0] << endl;return 0;
}

五、5.卡片 - 蓝桥云课

(模拟、枚举)算法代码: 

#include <iostream>
using namespace std;int main()
{int i;int arr[10];for(i=0;i<10;i++){arr[i]=2021;//记录0-9这10张卡片的数量,开始都是2021张}for(i=1;;i++){//由于不知道到i的边界值,省略,会一直执行int x=i;    //用x来存放每一个i的值,防止i值的改变while(x){if(arr[x%10]==0){//当有一张卡片的数量剩余为0张的时候,输出前一个i的值,也就是i-1,并退出cout<<i-1;return 0;}  arr[x%10]--;  //每一张卡片数量减少1x/=10;}}return 0;
}

六、6.成绩分析 - 蓝桥云课

(模拟)算法代码: 

#include <bits/stdc++.h>
using namespace std;
int sum;
vector<int> score;
int main()
{int n;cin>>n;score.resize(n,0);for(int i=0;i<n;i++){cin>>score[i];sum+=score[i];}sort(score.begin(),score.end());int the_lowest=score.front();int the_best=score.back();double average=(double)sum/n;average=round(average*100)/100;printf("%d\n",the_best);printf("%d\n",the_lowest);printf("%.2f\n",average);return 0;
}

七、7.空间 - 蓝桥云课

(单位换算)算法代码: 

#include <bits/stdc++.h>
using namespace std;
int main()
{cout<<(long long)256*1024*1024*8/32;cout<<1ll*256*1024*1024*8/32;return 0;
}

八、8.路径之谜 - 蓝桥云课

(DFS)算法代码: 

#include <bits/stdc++.h>
using namespace std;int n;
vector<int> north;  // 北墙靶子数字(自西向东)
vector<int> west;   // 西墙靶子数字(自北向南)
vector<int> path;   // 存储当前路径
vector<vector<bool>> visited;  // 记录已访问的方格
vector<int> result;  // 存储最终结果// 方向数组:上、右、下、左
int dx[4] = {-1, 0, 1, 0};
int dy[4] = {0, 1, 0, -1};// 检查当前位置是否有效
bool isValid(int x, int y) {return x >= 0 && x < n && y >= 0 && y < n && !visited[x][y];
}// 检查当前箭靶数字是否合法
bool isTargetValid() {for (int i = 0; i < n; i++) {if (north[i] < 0 || west[i] < 0) return false;}return true;
}// 检查是否到达终点且所有箭靶数字恰好用完
bool isSolution() {if (path.back() != n * n - 1) return false; // 未到达东南角for (int i = 0; i < n; i++) {if (north[i] != 0 || west[i] != 0) return false;}return true;
}void dfs(int x, int y) {// 到达终点且满足条件if (x == n - 1 && y == n - 1 && isSolution()) {result = path;return;}// 尝试四个方向for (int i = 0; i < 4; i++) {int nx = x + dx[i];int ny = y + dy[i];if (isValid(nx, ny)&&isTargetValid()) {// 尝试移动到这个位置int num = nx * n + ny;visited[nx][ny] = true;path.push_back(num);north[ny]--;west[nx]--;dfs(nx, ny);// 回溯visited[nx][ny] = false;path.pop_back();north[ny]++;west[nx]++;}}
}int main() {cin >> n;north.resize(n);west.resize(n);visited.resize(n, vector<bool>(n, false));// 读取北墙靶子数字(自西向东)for (int i = 0; i < n; i++) {cin >> north[i];}// 读取西墙靶子数字(自北向南)for (int i = 0; i < n; i++) {cin >> west[i];}// 起点是西北角(0,0),编号为0visited[0][0] = true;north[0]--;  // 北墙最西边的靶子west[0]--;   // 西墙最北边的靶子path.push_back(0);dfs(0, 0);// 输出结果for (int i = 0; i < result.size(); i++) {if (i != 0) cout << " ";cout << result[i];}cout << endl;return 0;
}

九、9.裁纸刀 - 蓝桥云课

(规律、思维)算法代码:

#include <iostream>
using namespace std;
int main()
{int s;s=440+4-1;cout<<s;return 0;
}

十、10.九进制转十进制 - 蓝桥云课

(进制转换)算法代码: (两种方法异曲同工)

#include<bits/stdc++.h>
using namespace std;int main() {string num = "2022"; // 九进制数int decimal = 0;int base = 9; // 九进制// 从最高位开始计算for (int i = 0; i < num.size(); i++) {int digit = num[i] - '0'; // 获取当前位的数字int power = num.size() - 1 - i; // 计算当前位的权值指数decimal += digit * pow(base, power);}cout << decimal << endl; // 输出结果return 0;
}
#include<bits/stdc++.h>
using namespace std;int main() {string num = "2022";int decimal = 0;int power = 1;// 从右向左计算for(int i = num.length() - 1; i >= 0; --i) {decimal += (num[i] - '0') * power;power *= 9;}cout << decimal << endl; // 输出: 1478return 0;
}

十一、11.分巧克力 - 蓝桥云课

(二分)算法代码: 

#include <bits/stdc++.h>
using namespace std;
int n, k;
int max_num;
int ans;
vector<pair<int, int>> hw; // 存储所有巧克力的高和宽int count_pieces(int mid)
{int cnt=0;for(auto &ch:hw){int h=ch.first;int w=ch.second;cnt+=(h/mid)*(w/mid);}return cnt;
}int main() 
{cin >> n >> k;hw.resize(n);for (int i = 0; i < n; ++i) {cin >> hw[i].first >> hw[i].second;max_num = max(max_num, hw[i].first);max_num = max(max_num, hw[i].second);}int l = 1, r = max_num;ans = 1; // 初始化为最小可能边长while(l<=r){int mid=l+(r-l)/2;int cnt=count_pieces(mid);if(cnt>=k){ans=mid;l=mid+1;}else{r=mid-1;}}cout<<ans<<endl;return 0;
}

十二、12.跑步锻炼 - 蓝桥云课

(模拟、枚举)算法代码: 

#include <bits/stdc++.h>
using namespace std;
int ans;
const int month_days[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int week_day=6;bool isLeapYear(int year) {return (year % 400 == 0) || (year % 100 != 0 && year % 4 == 0);
}int main()
{for(int year=2000;year<=2020;year++){for(int month=1;month<=12;month++){// 处理终止条件:2020年10月1日之后停止if (year == 2020 && month > 10) break;int days = month_days[month];// 处理闰年二月if (month == 2 && isLeapYear(year)) {days = 29;}for(int day=1;day<=days;day++){if(year==2020&&month==10&&day>=2){break;}if(day==1||week_day==1){ans+=2;}else{ans++;}week_day=(week_day+1)%7;}}}cout<<ans<<endl;return 0;
}

十三、13.蛇形填数 - 蓝桥云课

(模拟、规律、思维)算法代码: 

发现规律:

#include <bits/stdc++.h>
using namespace std;
int main()
{int ans=1;for(int i=1;i<20;i++){ans+=i*4;//对角线元素值=前一个元素+前一个元素的行号*4}cout<<ans;return 0;
}

数组模拟实现:

#include<bits/stdc++.h>
using namespace std;int mp[200][200], row = 0, col = 0, cnt = 1;int main() {mp[0][0] = 1;while(!mp[19][19]) {//右移mp[row][++col] = ++cnt;//左下方while(col) {mp[++row][--col] = ++cnt;}//下移mp[++row][col] = ++cnt;//右上方while(row) {mp[--row][++col] = ++cnt;}}/*for(int i = 0; i < 20; i++) {for(int j = 0; j < 20; j++) {cout << mp[i][j] << "  ";}cout << endl;}*/cout << mp[19][19];return 0;
}

非常牛逼的掉头想法(不需要数组):(自残形愧)

#include <iostream>
using namespace std;
int main()
{int row=1,col=1,flag=1,num=1;while(true){if(row==1){col++;flag=1;num++;}if(col==1){row++;flag=-1;num++;}row+=flag;col-=flag;num++;if(row==20&&col==20) break;}cout<<num;return 0;
}

十四、14.货物摆放 - 蓝桥云课

(枚举)算法代码:

#include<stdio.h>// 定义长整型别名,用于处理大整数
typedef long long LL;int main() {// 题目给定的货物总数(16位数)LL n = 2021041820210418;LL i, j, k;  // 三个维度L、W、H的候选值int res = 0;  // 结果计数器(方案总数)// 第一层循环:遍历可能的第一个因数i// 优化:i只需遍历到n的立方根,因为i^3 > n时不可能有解for(i = 1; i*i*i <= n; i++) {// 检查i是否是n的因数if(n % i == 0) {// 第二层循环:遍历可能的第二个因数j// 从i开始遍历,避免重复计算相同的因数组合// 条件i*j*j <= n确保三个因数的乘积不超过nfor(j = i; i*j*j <= n; j++) {// 检查j是否是(n/i)的因数if((n/i) % j == 0) {// 计算第三个因数kk = n / i / j;// 根据三个因数的关系计算排列组合数:// 情况1:三个数完全相同(i=j=k)if(i == j && j == k) {res += 1;  // 只有1种排列方式}// 情况2:有两个数相同(i=j或i=k或j=k)else if(i == j || i == k || j == k) {res += 3;  // 3种排列方式}// 情况3:三个数都不同else {res += 6;  // 6种排列方式(3! = 6)}}}}}// 输出最终结果printf("%d", res);//2430return 0;
}


十五、15.购物单 - 蓝桥云课

****     180.90       88折
****      10.25       65折
****      56.14        9折
****     104.65        9折
****     100.30       88折
****     297.15        半价
****      26.75       65折
****     130.62        半价
****     240.28       58折
****     270.62        8折
****     115.87       88折
****     247.34       95折
****      73.21        9折
****     101.00        半价
****      79.54        半价
****     278.44        7折
****     199.26        半价
****      12.97        9折
****     166.30       78折
****     125.50       58折
****      84.98        9折
****     113.35       68折
****     166.57        半价
****      42.56        9折
****      81.90       95折
****     131.78        8折
****     255.89       78折
****     109.17        9折
****     146.69       68折
****     139.33       65折
****     141.16       78折
****     154.74        8折
****      59.42        8折
****      85.44       68折
****     293.70       88折
****     261.79       65折
****      11.30       88折
****     268.27       58折
****     128.29       88折
****     251.03        8折
****     208.39       75折
****     128.88       75折
****      62.06        9折
****     225.87       75折
****      12.89       75折
****      34.28       75折
****      62.16       58折
****     129.12        半价
****     218.37        半价
****     289.69        8折

算法代码: 

#include <bits/stdc++.h>
using namespace std;
int main()
{double sum = 180.90*0.88+10.25*0.65+56.14*0.9+104.65*0.9+100.30*0.88+297.15*0.5+26.75*0.65+130.62*0.5+240.28*0.58+270.62*0.8+115.87*0.88+247.34*0.95+73.21*0.9+101.00*0.5+79.54*0.5+278.44*0.7+199.26*0.5+12.97*0.9+166.30*0.78+125.50*0.58+84.98*0.9+113.35*0.68+166.57*0.5+42.56*0.9+81.90*0.95+131.78*0.8+255.89*0.78+109.17*0.9+146.69*0.68+139.33*0.65+141.16*0.78+154.74*0.8+59.42*0.8+85.44*0.68+293.70*0.88+261.79*0.65+11.30*0.88+268.27*0.58+128.29*0.88+251.03*0.8+208.39*0.75+128.88*0.75+62.06*0.9+225.87*0.75+12.89*0.75+34.28*0.75+62.16*0.58+129.12*0.5+218.37*0.5+289.69*0.8;int a = (int)round(sum)/100*100+100;printf("%d",a);return 0;
}

十六、16.杨辉三角形 - 蓝桥云课

(规律、思维、二分)算法代码: 

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL n;  // 存储输入的N值/*
杨辉三角形观察:11   11  2  11 3  3 1
1 4 6 4 1
...
数字首次出现一定在左侧,因此可以忽略右侧对称部分
*/// 计算组合数C(x,k)
LL C(int x, int k) {LL ans = 1;for(int i = x, j = 1; j <= k; i--, j++) {ans = ans * i / j;  // 计算组合数if(ans > n) return ans;  // 超过n时提前返回}return ans;
}// 检查当前斜行t中是否存在n
bool check(int t) {// 二分查找的下界是2t,上界取n和2t中的较大值LL l = 2 * t, r = max(n, l);while(l < r) {int mid = l + r >> 1;  // 取中间值if(C(mid, t) >= n) r = mid;  // 中间值大于等于n,调整上界else l = mid + 1;      // 否则调整下界}if(C(r, t) != n) return false;  // 没找到n// 找到n,计算位置:(r+1)*r/2 + t + 1cout << (LL)(r + 1) * r / 2 + t + 1 << endl;return true;
}int main() {cin >> n;  // 输入要查找的数字N// 从最大的可能斜行t=17开始向下查找for(int t = 17; ; t--) {if(check(t)) break;  // 找到就退出}return 0;
}

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

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

相关文章

重塑知识的引擎:人工智能如何改变知识的生产与传播

一、引言&#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;需要为它买台全新的服务器。这样…

Linux系统学习Day04 阻塞特性,文件状态及文件夹查询

知识点4【文件的阻塞特性】 文件描述符 默认为 阻塞 的 比如&#xff1a;我们读取文件数据的时候&#xff0c;如果文件缓冲区没有数据&#xff0c;就需要等待数据的到来&#xff0c;这就是阻塞 当然写入的时候&#xff0c;如果发现缓冲区是满的&#xff0c;也需要等待刷新缓…