zoukankan      html  css  js  c++  java
  • 算法设计与技巧

    • 分而治之算法
    • 动态规划
    • 贪心算法
    • 回溯算法
    • 著名算法问题

    分而治之是算法设计的一种方法。它将一个问题分成多个和原问题相似的小问题,递归解决小问题,再将解决方式合并以解决原来的问题。

    分而治之版本的二分搜索算法。

    function binarySearchRecursive(arr,val,low,high){
        if(low <= high){
            const mid = Math.floor((low + high) / 2)
            const element = arr[mid]
            if(element < val){
                binarySearchRecursive(arr,val,mid + 1,high)
            }else if(element > val){
                binarySearchRecursive(arr,val,low,mid - 1)
            }else{
                return mid
            }
        }
    }
    function binarySearch(arr,val){
        const sortArr = quickSort(arr)
        const low = 0,high = arr.length - 1;
        return binarySearchRecursive(sortArr,val,low,high)
    
    }
    

    动态规划是一种将复杂问题分解成更小的子问题来解决的优化技术。

    function minCoinChange(coins,amount){
        const cache = []
        function makeChange(value){
            if(!value){
                return []
            }
            if(cache[value]){
                return cache[value]
            }
            let min = []
            let newMin;
            let newAmount;
            for(let i = 0;i < coins.length;i++){
                let coin = coins[i]
                newAmount = value - coin
                if(newAmount >= 0){
                    newMin = makeChange(newAmount)
                }
                if(newAmount >= 0 && (newMin.length < min.length -1 || !min.length) && (newMin.length || !newAmount)){
                    min = [coin].concat(newMin)
                }
            }
            return (cache[value] = min)
        }
        return makeChange(amount)
    }
    

      

    未完待续... 

  • 相关阅读:
    USACOZero Sum
    USACOControlling Companies
    USACOParty Lamps
    USACOMoney Systems
    UVa11292
    USACOLongest Prefix
    USACOThe Tamworth Two
    USACORunaround Numbers
    业内常见电子病历编辑器简单比较(1)编辑控件来源比较
    GB(国标)字典大全
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13252329.html
Copyright © 2011-2022 走看看