java 蓝桥杯 奇怪的比赛
2017-03-02 15:03
176 查看
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手的起步分都是10分,某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可用仅含1和0的串来表示,如0010110011就是可能的情况。
你的任务是算出所有可能情况,每个答案占一行。
方法一:
方法二:
结果:
1011010000
0111010000
0010110011
你的任务是算出所有可能情况,每个答案占一行。
方法一:
import java.math.*; public class Main { public static void main(String args[]) { String str=""; kk(str,0); } public static void kk(String str,int i) { if(i==10) { Check(str);return ; } kk(str+1,i+1); kk(str+0,i+1); } public static void Check(String str) { int count =10; for(int i=0;i<str.length();i++) { if(str.charAt(i)=='0')count-=(i+1); else count*=2; } if(count==100)System.out.println(str); } }
方法二:
import java.util.*; public class Main { public static void main(String args[]) { for(int q=0;q<=1;q++) for(int w=0;w<=1;w++) for(int e=0;e<=1;e++) for(int r=0;r<=1;r++) for(int t=0;t<=1;t++) for(int y=0;y<=1;y++) for(int u=0;u<=1;u++) for(int i=0;i<=1;i++) for(int o=0;o<=1;o++) for(int p=0;p<=1;p++) { String str=""+q; str=str+w;str=str+e;str=str+r;str=str+t; str=str+y;str=str+u;str=str+i;str=str+o; str=str+p; Check(str); } } public static void Check(String str) { int count =10; for(int i=0;i<str.length();i++) { if(str.charAt(i)=='0')count-=(i+1); else count*=2; } if(count==100)System.out.println(str); } }
结果:
1011010000
0111010000
0010110011
相关文章推荐
- 备考蓝桥杯(30)奇怪的比赛java实现(exeforward)
- 蓝桥杯Java练习——奇怪的比赛
- 黄金队列,汉诺塔,奇怪的比赛,第一个数字,割圆,最大数,矩形的交集和并集,趣味算式(第三届蓝桥杯Java本科预赛试题)
- 蓝桥杯--2012--奇怪的比赛(全排列)
- 蓝桥杯 奇怪的比赛
- 蓝桥杯-奇怪的比赛
- 蓝桥杯-奇怪的比赛
- 循环问题2012蓝桥杯省赛第四题 奇怪的比赛(暴力解决)
- 蓝桥杯 第三届 奇怪的比赛
- 蓝桥杯 第三届C/C++预赛真题(4) 奇怪的比赛(递归)
- 奇怪的比赛--蓝桥杯
- 2012蓝桥杯C++本科 奇怪的比赛
- 蓝桥杯-奇怪的比赛
- 蓝桥杯-奇怪的比赛
- 蓝桥杯 结果填空 奇怪的比赛 dfs
- 蓝桥杯——奇怪的比赛
- 情况问题奇怪的比赛--蓝桥杯
- 奇怪的比赛--蓝桥杯
- 2012年蓝桥杯【初赛试题】奇怪的比赛
- 2012蓝桥杯C++本科 奇怪的比赛