目录
一、题目
1、题目描述
2、输入输出
2.1输入
2.2输出
3、原题链接
二、解题报告
1、思路分析
2、复杂度
3、代码详解
一、题目
1、题目描述
2、输入输出
2.1输入
无
2.2输出
3、原题链接
0有奖问答 - 蓝桥云课 (lanqiao.cn)
二、解题报告
1、思路分析
由于是填空题,可以直接暴搜(bushi)
设计状态f[i][j]为前i道题答了j分的方案数目
那么j如果是0,那么就是f[i - 1][0] +……f[i - 1][99],不加100是因为100分就结束了
如果j非0且j大于等于10,那么f[i][j] += f[i - 1][j - 10]
统计所有f[i][70]即可
2、复杂度
时间复杂度: O(nU)空间复杂度:O(nU)
3、代码详解
#include <iostream>
using namespace std;
int f[31][101]{0}, ret = 0;
int main()
{
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
f[0][0] = 1;
for(int i = 1; i <= 30; i++){
for(int j = 0; j <= 100; j++){
if(!j)
for(int k = 0; k <= 99; k++)
f[i][0] += f[i - 1][k];
else if(j >= 10)
f[i][j] += f[i - 1][j - 10];
if(j == 70) ret += f[i][70];
}
}
cout << ret;
return 0;
}