美文网首页
关于暴力搜索算法

关于暴力搜索算法

作者: pengbaba19 | 来源:发表于2019-02-26 20:40 被阅读0次

    给定数组arr,arr中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值的货币可以使用任意张,再给定一个正数aim 代表要找的钱数,求换钱有多少种方法。

    以下是我的python3 版本的答案:

    money_array = [1,2,4]

    aim =3

    def force_search(array,index,aim):

    if index ==len(array):

    if aim ==0:

    return 1  

    #表示的是前面的系数组成是否可以构成一个==aim的解  ax+by+cz = aim  (a,b,c)  系数成立返回1

            else:

    return 0

        else:

    result =0

            i =0

            while array[index]*i <= aim:

    money_left = aim - array[index]*i

    result += force_search(array=array,index=index+1,aim=money_left)

    i+=1

        return result

    result = force_search(array=money_array,index=0,aim=aim)

    print(result)

    我最初的思路也是递归查找,但是不明白界限为什么是 len(array),理论上超过len(array) -1 就越界了。

    冥思苦想明白了。len(array) 是给多层 i 赋值 之后 (也就是注释种说的 (a,b,c) 组),进行判断 递归中的i 组合能否实现等式 (i a+i b+i c)= aim i 是层层递进的。这里用数学等式也许会更好理解。第一次写,写的不好还请多多包涵

    相关文章

      网友评论

          本文标题:关于暴力搜索算法

          本文链接:https://www.haomeiwen.com/subject/glizyqtx.html