随机给出一个数组,如何判断其中的数有没有和为10的可能性
不是统统加一块那么简单,是数组里只要有任意数相加可以为10就给真值
像下面这组数字
3
1
1
2
1
2
1
统加是11,但因为它存在如3+2+2+1+1+1=10这样的可能性,所以就应该给真值
而像
1
7
8
6
这组数字无论如何排列组合,都不可能有和为10的可能,就应该返回false

解决方案 »

  1.   

    1. 把所有待比较的数从小大大排列,以便加速后便的查找。
    2. 找出问题的答案。找出问题的答案(参数:一个标志数组指出问题中的数是否已经被包括在准答案中):
    1. 现在准答案的元素之和=10,打印结果,返回成功。
    2. 现在准答案的元素之和>10,返回失败。
    3. 现在准答案的元素之和<10,所有数都被加入准答案了,返回失败。
    4. 现在准答案的元素之和<10,循环选取一个数加入准答案,递归计算。
      循环中,如果返回成功,则跳出整个过程,返回成功。
      

  2.   

    to sp1234
    找出问题的答案(参数:一个标志数组指出问题中的数是否已经被包括在准答案中):
    1. 现在准答案的元素之和=10,打印结果,返回成功。
    2. 现在准答案的元素之和>10,返回失败。
    3. 现在准答案的元素之和<10,所有数都被加入准答案了,返回失败。
    4. 现在准答案的元素之和<10,循环选取一个数加入准答案,递归计算。以你的这种办法,下面这个数组将返回false
    1
    1
    1
    1
    2
    2
    3
      

  3.   

    to wendua:
    用你的办法算
    1
    1
    1
    1
    2
    2
    3
    可能还是有问题吧