奇怪的比赛 蓝桥杯
2014-03-05 10:28
183 查看
/* 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。 每位选手都有一个起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗? 如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。 你的任务是算出所有可能情况。每个答案占一行。 多个答案顺序不重要。 答案写在“解答.txt”中,不要写在这里! 参考答案: 0010110011 (0分) 0111010000 (4分) 1011010000 (4分) */ public class Main9 { public static void main(String[] args) { long start = System.currentTimeMillis(); int[] s = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // 使用递归 test(s, 10, 0, 1); test(s, 10, 1, 1); long end = System.currentTimeMillis(); System.out.println(end - start + "ms"); } public static void test(int[] st, int sum, int or, int i) { if (i > 10) { if (sum == 100) { for (int tmp : st) { System.out.print(tmp); } System.out.println(); } return; } else { // 减枝 if (sum < 0) return; if (or == 0) { sum -= i; st[i - 1] = 0; } else { st[i - 1] = 1; sum *= 2; } test(st, sum, 0, i + 1); if (i + 1 > 10) return; test(st, sum, 1, i + 1); } } }
相关文章推荐
- 2012年蓝桥杯【初赛试题】奇怪的比赛
- 蓝桥杯 历届试题 奇怪的比赛
- 第三届蓝桥杯软件类省赛真题-C-A-4_奇怪的比赛
- 奇怪的比赛(蓝桥杯)
- 蓝桥杯-奇怪的比赛
- 蓝桥杯-奇怪的比赛
- 蓝桥杯——奇怪的比赛
- 2012蓝桥杯C++本科 奇怪的比赛
- 蓝桥杯-2012省赛04-奇怪的比赛
- 蓝桥杯-奇怪的比赛
- 奇怪的比赛(蓝桥杯)
- 蓝桥杯历届-奇怪的比赛
- 蓝桥杯【省赛试题4】奇怪的比赛
- 蓝桥杯2012奇怪的比赛
- 蓝桥杯Java练习——奇怪的比赛
- 奇怪的比赛,蓝桥杯2012年第4题
- 2012 年蓝桥杯 预赛 第四题 奇怪的比赛 状态压缩
- 情况问题奇怪的比赛--蓝桥杯
- 备考蓝桥杯(30)奇怪的比赛java实现(exeforward)
- 蓝桥杯历届-奇怪的比赛