python语言蓝桥杯真题大学B组
时间: 2025-06-21 14:38:51 浏览: 12
### Python蓝桥杯大学B组历年真题
以下是关于Python语言在蓝桥杯大赛大学B组中的部分历年真题及其解析:
#### 题目1:字符串排序
题目描述:输入一个字符串,将其按照字母顺序从小到大排列并输出。
代码实现如下:
```python
a = input()
b = []
for i in a:
b.append(i)
b.sort()
print("".join(str(s) for s in b))
```
此代码实现了对输入字符串的字符逐一读取、存储至列表 `b` 中,并通过调用 `.sort()` 方法完成排序操作[^1]。最终利用 `" ".join(...)` 将排序后的字符重新组合成字符串形式输出。
---
#### 题目2:判断闰年
题目描述:给定某一年份,判断其是否为闰年。如果该年份满足条件,则返回 True;否则返回 False。
代码逻辑分析:
- 判断规则遵循公历规定:“四年一闰,百年不闰,四百年再闰”。具体而言,当且仅当年份数字能够被 4 整除而不能被 100 整除或者能被 400 整除时,这一年才是闰年。
代码实现如下:
```python
def is_leap_year(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False
# 测试样例
test_years = [2000, 2100, 2024]
results = {year: is_leap_year(year) for year in test_years}
print(results)
```
上述函数定义了一个用于检测指定年份是否属于闰年的方法 `is_leap_year`,并通过测试数据验证了其实现效果[^2]。
---
#### 题目3:动态规划问题——最大价值子序列
题目描述:给出一组数值权重数组以及对应的约束关系矩阵,求解使得总权值最大的合法子序列长度。
核心思路在于采用二维动态规划表记录中间计算过程的状态转移方程。设 `dp[i][j]` 表达的是考虑前 i 项元素情况下选取与否对应的最大收益情况,则状态更新公式可表示为:
- 不选择当前项目:`dp[i][0] = max(dp[i-1][0], dp[i-1][1])`
- 选择当前项目但需跳过紧邻前者:`dp[i][1] = dp[i-1][0] + wi`
其中变量含义分别为:
- `i`: 当前所处理的数据索引位置;
- `wi`: 对应于第 i 位上的实际贡献量大小[^3]。
完整程序框架示意如下所示:
```python
n = int(input()) # 输入物品数量 n
weights = list(map(int, input().split())) # 权重向量初始化
dp = [[0]*2 for _ in range(n)] # 动态规划表格分配空间
for idx in range(1, n): # 自底向上填充 DP 数组
dp[idx][0] = max(dp[idx-1][0], dp[idx-1][1])
dp[idx][1] = dp[idx-1][0] + weights[idx]
result = max(dp[-1][0], dp[-1][1]) # 取全局最优方案作为结果输出
print(result)
```
以上展示了如何运用动态规划技巧解决特定场景下的最优化难题实例之一。
---
阅读全文
相关推荐


















