蓝桥杯c语言a组算法考点
时间: 2025-02-14 15:53:04 浏览: 71
### 蓝桥杯 C语言 A组 算法考点
#### 数位处理与排序
对于数位之和的计算以及基于此特性的排序问题,可以采用自定义比较函数来实现特定规则下的排序。具体到题目中的需求——按数位和升序排列,在数位和相同的情况下再按数值大小升序排列,可以通过编写一个辅助函数 `digitSum` 来获取某个整数各位置上的数字总和,并以此作为主要关键字进行排序[^2]。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 计算并返回num的各位数字之和
int digitSum(int num){
int sum = 0;
while(num != 0){
sum += num % 10; // 加上当前最低位
num /= 10; // 移除最低位
}
return sum;
}
bool customSort(const pair<int,int>& a, const pair<int,int>& b){
if(a.second == b.second){ // 如果两者的数位和相等,则比较原始值
return a.first < b.first;
}else{ // 否则先依据数位和从小到大排序
return a.second < b.second;
}
}
```
上述代码片段展示了如何创建一个用于求解单个整数所有位数加总的函数 `digitSum()` 和一个定制化的比较器 `customSort()`. 这种方法能够有效地解决像蓝桥杯竞赛中提到的那种特殊排序问题.
#### 图论基础-Dijkstra最短路径算法
另一个重要的知识点是从图论角度出发理解 Dijkstra 算法及其两种常见的时间复杂度表现形式:朴素版本 O(n^2) 和经过优先队列优化后的 O(m log n)[^1]. 此外还应该熟悉该算法的具体应用场景比如寻找两点间最小花费等问题.
针对以上提及的内容,建议深入学习以下几个方面:
- **数据结构的选择**: 学习不同场景下选用合适的数据结构(如邻接矩阵 vs 邻接表),这直接影响着程序效率.
- **时间空间权衡**: 明白各种操作背后所涉及的空间消耗情况,以便做出更优决策.
- **实际案例分析**: 结合实例练习掌握这些理论知识的应用技巧.
阅读全文
相关推荐


















