某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:
每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?
如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。
你的任务是算出所有可能情况。每个答案占一行。
多个答案顺序不重要。
//先暴力排列组合,然后根据排列的顺序,根据规则计算分数,如果排列的刚好等于100分,怎吧排列的字符串输出
//每种组合方式判断完要清空一下
public class 奇怪的比赛 {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer sb = new StringBuffer();
for(int i =0; i <=1;i++ ){
for(int j =0; j<=1;j++ ){
for(int k =0; k <=1;k++ ){
for(int l =0; l <=1;l++ ){
for(int m =0; m <=1;m++ ){
for(int n =0; n<=1;n++ ){
for(int o =0; o <=1;o++ ){
for(int p =0; p <=1;p++ ){
for(int q =0; q <=1;q++ ){
for(int r =0; r <=1;r++ ){
int u = i;
sb.insert(0, u);
u = j;
sb.insert(0, u);
u = k;
sb.insert(0, u);
u = l;
sb.insert(0, u);
u = m;
sb.insert(0, u);
u = n;
sb.insert(0, u);
u = o;
sb.insert(0, u);
u = p;
sb.insert(0, u);
u = q;
sb.insert(0, u);
u = r;
sb.insert(0, u);
String bString = sb.toString();
String[] arr = bString.split("");
int[] arr2 = new int[arr.length];
for(int v =0; v <arr2.length;v++){
arr2[v]=Integer.valueOf(arr[v]);
}
int e = 10;
for(int b = 0 ; b<10;b++){
if(arr2[b]==0){
e=e-b-1;
}else{
e=e*2;
}
}
if(e==100){
for(int w = 0 ; w<arr2.length;w++){
System.out.print(arr2[w]);
}
System.out.println();
}
sb.delete(0, sb.length());
}
}
}
}
}
}
}
}
}
}
}
}