第三届蓝桥杯-省赛_4

这次介绍的是第三届蓝桥杯省赛题目的第四题….

1
2
3
4
5
6
7
8
9
10
11
12
13
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:

每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。

每位选手都有一个起步的分数为10分。

某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?

如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。

你的任务是算出所有可能情况。每个答案占一行。

答案写在“解答.txt”中,不要写在这里!

题目求解: 首先分析题目,终止条件为10个问题恰恰好100分。答错扣掉题目的分数,答对分数翻倍,可以构建递归条件了。递归的出口就是终止条件,递归部分就是答对和答对的部分。

java代码实现如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package Problem_2;

public class Question_4 {

public static void main(String[] args) {
match(10, 1, "");
}

private static void match(int i, int m, String s) {
// 递归求解
// 递归的出口
if (i == 100 && m == 11) {
System.out.println(s);
return;
}
if (m > 10) {
return;
}
// 递归添加s
match(i * 2, m + 1, s + "1");
match(i - m, m + 1, s + "0");
}
}

答案如下:

1
2
3
1011010000
0111010000
0010110011
-------------本文结束感谢您的阅读-------------

本文标题:第三届蓝桥杯-省赛_4

文章作者:小憧憬

发布时间:2019年10月06日 - 22:10

最后更新:2019年10月07日 - 07:10

原始链接:http://zengbolin.github.io/2019/10/06/第三届蓝桥杯-省赛-4/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持踩坑挖坑跳坑,你的支持将鼓励我继续创新执着.