蓝桥杯备赛-DFS-有奖问答
问题描述
小蓝正在参与一个现场问答的节目。活动中一共有 3030 道题目, 每题只有答对和答错两种情况, 每答对一题得 1010 分,答错一题分数归零。
小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100100 分, 所以到达 100100 分时小蓝会直接停止答题。请注意小蓝也可能在不到 100100 分时停止答题。
已知小蓝最终实际获得了 7070 分对应的奖项, 请问小蓝所有可能的答题情况有多少种?
#include<iostream>
#include<stdio.h>
using namespace std;
int ans;
int score = 0;
void dfs(int x) {
if (score == 100) {
return;
}//题目规定,达到一百分就不在作答,但是不算ans,直接return
if (score == 70) {
ans++;
//return;
}//得到70不能直接return,有可能在当前的基础上继续答题还会得到70
if (x == 31) return;
score += 10;
dfs(x + 1);
score = 0;
dfs(x + 1);
}
int main() {
dfs(1);
cout << ans;
return 0;
}