2023年第十四届蓝桥杯 - 省赛 - C/C++大学A组 - B.有奖问答

Idea

一共 30 道题,得分情况为 0 ~ 100 分。

创建一个 30 行 100 列的 dp 数组,dp[i][j] 表示做完第 i 题,得分为 j 的方案数。

Code

Python

python 复制代码
dp = [[0 for _ in range(100)] for _ in range(31)]   # dp[i][j] 表示做完第 i 题得分为 j 的方案数

dp[1][0] = 1    # 做完第 1 题得分为 0
dp[1][10] = 1   # 做完第 1 题得分为 10

ans = 0
for i in range(2, 31):
    # 不枚举到 100 的原因是,这种情况不存在,因为是以 70 分结束的,100 分一定会结束,而 80,90 分不一定结束
    for j in range(0, 91, 10):
        if j == 0:  # 第 i 题没做对
            # 方案数为做完第 i-1 题所有方案数之和
            for k in range(0, 91, 10):
                dp[i][j] += dp[i - 1][k]
        else:       # 第 i 题做对了
            dp[i][j] = dp[i - 1][j - 10]
            if j == 70:
                ans += dp[i][j]
print(ans)

Answer: 8335366

OJ: http://oj.ecustacm.cn/problem.php?id=2068

相关推荐
buyue__13 分钟前
C++实现数据结构——线性表
数据结构·c++
雨落在了我的手上36 分钟前
C语言入门(十三):操作符详解(1)
c语言
fantasy5_51 小时前
手撕vector:从零实现一个C++动态数组
java·开发语言·c++
兜兜风d'1 小时前
RabbitMQ死信队列详解
c++·rabbitmq·java-rabbitmq
C_Liu_1 小时前
12.C++:模版进阶
开发语言·c++
娇娇yyyyyy2 小时前
C++11新特性基础知识点汇总
开发语言·c++·算法
烟花落o2 小时前
指针深入第二弹--字符指针、数组指针、函数指针、函数指针数组、转移表的理解加运用
c语言·开发语言·笔记·vscode·算法
散峰而望2 小时前
基本魔法语言数组 (二) (C语言)
c语言·开发语言·github·visual studio
Benny_Tang3 小时前
CSP-J/S 2025 游记
c++
l1t3 小时前
对luasql-duckdb PR的测试
c语言·数据库·单元测试·lua·duckdb