蓝桥杯20112 不同的总分值
问题描述
在今年蓝桥杯的决赛中,一共有 10 道题目,每道题目的分数依次为 5 分,5 分,10 分,10 分,15 分,15 分,20 分,20 分,25 分,25 分。
假设某位参赛选手在解答每一道题时,要么能得到该题的全部分数,要么就得 0 分。那么请问,这位参赛选手在完成这 10 道题之后,所能获得的总分值存在多少种不同的情况?
注意,总分值仅需关注选手 10 道题的总得分,而无需关注具体是由哪些题获得了相应的分数。例如,选手第一道题获得 5 分其余题均为 0 分,与第二道题获得 5 分其余题均为 0 分,应视为同一种情况。
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
dfs,用set 去重
#include<iostream>
#include<set>
using namespace std;int a[11] = {0, 5, 5, 10, 10, 15, 15, 20, 20, 25, 25};
set<int> s; //用于存储所有可能的总分,自动去重//x:当前处理的题目编号 sum:当前已选题目的总分
void dfs(int x, int sum)
{if(x > 10){s.insert(sum);return;}//不选第 x 题 dfs(x+1, sum);//选第 x 题dfs(x+1, sum+a[x]);
}int main()
{dfs(1, 0);cout<<s.size()<<endl;return 0;
}