记录备战第十六届蓝桥杯的过程

1.学会了原来字符串也有比较方法,也就是字符串987 > 98 等等,可以解决拼最大数问题

题目链接:5.拼数 - 蓝桥云课 (lanqiao.cn)

2.今天又复习了一下bfs,感觉还是很不熟练,可能是那个过程我些许有点不熟悉,准备再看看bfs然后自己总结一下。

bfs做题步骤

1,定义好结构体,数组,标记数组

2,定义好方向数组

3,定义好出发点和结束点

4,在用结构体定义好起始点给队列,起始点的标记数组设置为1。

5,while循环,条件是队列不能为空

6,里面先写结束条件,结束条件就是当前走的点走到了结束点

7,然后for循环方向数组,重新定义当前的x,y,step,让step + 1。让当前的x,y的标记数组变成1。

8,然后弹出来。

标准的bfs模板代码如下

# include <iostream>
# include <queue>
using namespace std;
int a[110][110];
bool vis[110][110];
struct Type{
	int x;
	int y;
	int step;
};

int dx[] = {-1, 0, 1, 0};
int dy[] = {0, -1, 0, 1};

int main()
{
	int n, m, x1, x2, y1, y2;
	queue<Type> q1;
	cin>>n>>m;
	for(int i = 1; i <= n; i++)
	{
		for(int j = 1; j <= m; j++)
		{
			cin>>a[i][j];
		}
	}
	cin>>x1>>y1>>x2>>y2;
	Type start;
	start.x = x1;
	start.y = y1;
	start.step = 0;
	q1.push(start);
	vis[x1][x2] = 1;
	int flag = 0;
	while(!q1.empty())
	{
		int x = q1.front().x, y = q1.front().y;
		if(x == x2 && y == y2)
		{
			flag = 1;
			cout<<q1.front().step<<endl;
			break;
		}
		for(int k = 0; k < 4; k++)
		{
			int tx, ty;
			tx = q1.front().x + dx[k];
			ty = q1.front().y + dy[k];
			if(a[tx][ty] == 1 && vis[tx][ty] == 0)
			{
				Type temp;
				temp.x = tx;
				temp.y = ty;
				temp.step = q1.front().step + 1;
				q1.push(temp);
				vis[tx][ty] = 1;
			}
		}
		q1.pop();
	}
	if(flag == 0)
	{
		cout<<-1<<endl;
	}
	return 0;
}

题目链接:7.走迷宫 - 蓝桥云课 (lanqiao.cn)

STL库,今天晚上看见一个非常值得注意的库函数stoi,substr

# include <iostream>
# include <cstring>
using namespace std;
int main()
{
	string s = "520love";
	int a = stoi(s); //这个只能把数字字符转化为数字,其他的不行
	cout<<a<<endl;	
	size_t pos;      //这个是无类型定义
	int b = stoi(s, &pos, 16);    //这个里面的pos也就是检测到转化不了的数字当前的位置意思也就是说pos = 3
	cout<<pos<<endl;
	cout<<b<<endl;
	
//substr也就是提取当前的位置到末尾,如果没有特殊标记的话。默认是提取到末尾
	cout<<s.substr(pos)<<endl;
	cout<<s.substr(pos, 2);
	return 0;
}

 优先队列prority_queue

greater从小到大排序的队列,less是从大到小排序的队列。

//------prority_queue->greater<int>----------
//#include <queue>
//#include <iostream>
//using namespace std;
//int main() {
//    priority_queue<int, vector<int>, greater<int>> pq;
//
//    pq.push(3);
//    pq.push(1);
//    pq.push(4);
//    pq.push(1);
//
//    while (!pq.empty()) {
//        cout << pq.top() << " ";
//        pq.pop();
//    }
//
//    return 0;
//}



//---------prority_queue->less------------
#include <queue>
#include <iostream>
using namespace std;
int main() {
    priority_queue<int, vector<int>, less<int>> pq;

    pq.push(3);
    pq.push(1);
    pq.push(4);
    pq.push(1);

    while (!pq.empty()) {
        cout << pq.top() << " ";
        pq.pop();
    }

    return 0;
}

### 第十六届蓝桥杯 Python 组试题解析及相关资料 关于第十六届蓝桥杯 Python 组的试题解析和相关资料,虽然目前尚未有完整的官方文档发布,但可以通过以往的比赛真题以及类似的训练资源来准备。以下是基于已有信息整理的内容: #### 一、已知的蓝桥杯 Python 题目特点 蓝桥杯竞赛通常会涉及算法设计、数据结构应用以及编程技巧等方面的知识[^1]。例如,在往年的比赛中,常见的题目类型包括但不限于: - 数字处理与逻辑推理(如寻找特定条件下的数字组合) - 字符串操作(如判断子串重复次数或模式匹配) - 动态规划与贪心算法的应用 - 图论基础(路径最短化等问题) 具体到 **第十五届青少年组蓝桥杯 Python 选拔赛** 中提到的一些经典问题可以作为参考案例进行练习[^1]。 #### 二、可能适用的学习材料推荐 对于备战即将举行的赛事或者回顾上一年度的情况来说,以下几个方向值得重点关注并利用现有公开的信息源加以巩固提升技能水平: ##### (一)历史真题演练 通过解决历年来的实际考题能够有效帮助参赛者熟悉命题风格及其难度分布情况。比如下面列举了几道来自不同年份却具有代表性的样例供考生们模拟测试之用[^2]: ###### A. 美丽的2 此题主要考察选手能否快速识别满足一定规律约束条件下整数值的存在性判定方法。 ```python def count_beautiful_numbers(limit): result = [] for num in range(1, limit + 1): if '2' in str(num): # 判断是否含有数字2 result.append(num) return len(result) print(count_beautiful_numbers(100)) # 输出符合条件的数量 ``` ###### B. 合数个数 该类问题是围绕素因数分解展开讨论如何统计区间范围内所有非质数成员总数的过程描述。 ```python import math def is_prime(n): if n <= 1: return False sqrt_n = int(math.sqrt(n)) for i in range(2, sqrt_n + 1): if n % i == 0: return False return True def composite_count(start, end): cnt = 0 for number in range(start, end + 1): if not is_prime(number) and number != 1: # 排除掉1这个特殊情况 cnt += 1 return cnt print(composite_count(4, 10)) # 测试范围内的合数数量 ``` ##### (二)专项技术指南 除了单纯依赖过往试卷之外,还可以借助专门针对某项核心技术领域编写的教材书籍进一步深化理解掌握程度。例如有关于动态规划方面的深入剖析文章就非常适合用来提高解复杂递推关系的能力;另外还有关于回溯法原理讲解的小册子也相当不错等等[^1]^。 #### 三、总结建议 综上所述,尽管现在还没有完全公布出来的正式版本可供查阅下载使用,但是凭借之前积累下来的经验教训再加上合理安排时间分配计划表的话,则完全可以做到事半功倍的效果!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值