某大奖赛,每位选手需要回答10个问题(编号1~10),答对的当前分数翻倍;答错则扣掉与题号相同的分数(每位选手必须回答)
每位选手起步分10分,某选手最终得分刚好是100分,列出回答的情况,正确记1,错误记0,10个题目的情况仅用1和0来表示,例如0010110011就是可能的情况。
求所有可能的情况。
求速度解答啊,急!!

解决方案 »

  1.   


    public class Test {
    public static void main(String[] args){
    int score=10;
    for(Integer i=0;i<1024;i++){
    String b = i.toBinaryString(i);
    StringBuffer c =new StringBuffer();
    for(int j=0;j<10-b.length();j++){
    c.append('0');
    }
    c.append(b);
    String d = c.toString();
    char[] chars = d.toCharArray();
    for(int k=0 ; k<10;k++){
    if(chars[k]=='0'){
    score -=k;
    }
    else{
    score *=2;
    }
    }
    if(score==100){
    System.out.println(chars);
    }
    score = 10;
    }
    }
    }
      

  2.   


    public class Test {
    public static void main(String[] args){
    int score=10;
    for(Integer i=0;i<1024;i++){
    String b = i.toBinaryString(i);
    StringBuffer c =new StringBuffer();
    for(int j=0;j<10-b.length();j++){
    c.append('0');
    }
    c.append(b);
    String d = c.toString();
    char[] chars = d.toCharArray();
    for(int k=0 ; k<10;k++){
    if(chars[k]=='0'){
    score -=k+1;
    }
    else{
    score *=2;
    }
    }
    if(score==100){
    System.out.println(chars);
    }
    score = 10;
    }
    }
    }
    //分数嫁错了
    0010110011
    0111010000
    1011010000