题目要求
选手初始分数为10,在10个问题中,答对的话,分数翻倍;答错的话,扣掉与题号相同的分数(不回答按错误处理)。最后得分为100时,算出所有答题的情况,答对记作1,答错记作0.
2.2解决方法
逐步递归,将每次答错和答对的情形通过程序表示出来,存在数组中,如果最后得分等于100,输出该数组.
2.3程序
2.3.1程序
#include <cstdio>
using namespace std;
const int N = 15;
int p[N];
void dfs(int res, int u)
{
if (u == 11)
{
if (res == 100)
{
for (int i = 1; i < 11; i ++ )
printf("%d", p[i]);
puts("");
}
}
else
{
p[u] = 0;
dfs(res - u, u + 1);
p[u] = 1;
dfs(res * 2, u + 1);
}
}
int main()
{
dfs(10, 1);
return 0;
}