暴力搜索

  1. /** 
  2.  * 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 
  3.  *  每位选手需要回答10个问题(其编号为1到10),越后面越有难度。 
  4.  *  答对的,当前分数翻倍;答错了则扣掉与题号相同的分数 
  5.  *  (选手必须回答问题,不回答按错误处理)。 每位选手都有一个 
  6.  *  起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让 
  7.  *  你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答 
  8.  *  错了吗? 如果把答对的记为1,答错的记为0,则10个题目的回答情 
  9.  *  况可以用仅含有1和0的串来表示。例如:0010110011 就是可能的情况。 
  10.  *   你的任务是算出所有可能情况。每个答案占一行 
  11.  * @author Felicitia 
  12.  *  
  13.  */  
  14. public class Score {  
  15.         public static void main(String argv[])   
  16.         {  
  17.             int maxDeep = 10;  
  18.             int[] array = new int[maxDeep];  
  19.             for(int i=0; i<2; i++)  
  20.             {  
  21.                 array[0] = i;  
  22.                 search(maxDeep, 1, array);  
  23.             }  
  24.        }  
  25.         private static void search(int maxDeep, int deep, int[] array)  
  26.         {  
  27.             if(maxDeep == deep)   
  28.             {  
  29.                 int score = 10;  
  30.                 for(int i=0; i< maxDeep; i++)  
  31.                 {  
  32.                     if(array[i]==1)  
  33.                     {  
  34.                         score *= 2;  
  35.                     }  
  36.                     else  
  37.                     {  
  38.                         score -= (i+1);   
  39.                     }  
  40.                 }  
  41.                 if(score == 100)  
  42.                 {  
  43.                     for(int i=0; i<maxDeep; i++)  
  44.                     System.out.print(array[i]);  
  45.                     System.out.println();  
  46.                 }  
  47.             }  
  48.             else   
  49.             {  
  50.                 for(int i=0; i<2; i++)  
  51.                 {  
  52.                     array[deep] = i;  
  53.                     search(maxDeep, deep+1, array);  
  54.                 }  
  55.             }  
  56.         }  
  57. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值