日期:2014-05-20  浏览次数:20646 次

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


求速度解答啊,急!!

------解决方案--------------------
Java code

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