zoukankan      html  css  js  c++  java
  • js:数据结构笔记14--高级算法

    动态规划:

    递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题;

    动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案;

      

    function dynFib(n) {
    	var val = [];
    	for(var i = 1; i <= n; ++i) {
    		val[i] = 1;
    	}
    	if(n === 1) {
    		return 1;
    	} else {
    		for(var i = 2; i <= n; ++i) {
    			val[i] = i * val[i-1];
    		}
    		return val[n];
    	}
    }
    
    function iterFib(n) {
    	var last = 1,
    	    result = 1;
    	for(var i = 2; i <= n; ++i) {
    		result = last * i;
    		last = result;
    	}
    	return result;
    }
    

    背包问题:

    • 递归解决:
    function max(a,b) {
    	return (a > b) ?  a : b;
    }
    function knapsack(capacity,size,value,n) {
    	if(n == 0 || capacity ==0) {
    		return 0;
    	}
    	if(size[n -1] > capacity) {
    		return knapsack(capacity,size,value,n-1);
    	} else {
    		return max(value[n - 1] + 
    					knapsack(capacity - size[n - 1],size,value,n-1),
    					knapsack(capacity,size,value,n-1));
    	}
    }
    
    var value = [4,5,10,11,13],
    	size = [3,4,7,8,9],
    	capacity = 16,
    	n = 5;
    console.log(knapsack(capacity,size,value,n));
    
    •  动态规划:
    function max(a,b) {
    	return (a > b) ?  a : b;
    }
    function dknapsack(capacity,size,value,n) {
    	var k = [];
    	for(var i = 0; i <= capacity + 1; ++i) {
    		k[i] = [];
    	}
    	for(var i = 0; i <= n; ++i) {
    		for(var w = 0; w <= capacity; ++w) {
    			if(i == 0 || w == 0) {
    				k[i][w] = 0;
    			} else if(size[i - 1] <= w) {
    				k[i][w] = max(value[i - 1] + k[i - 1][w - size[i - 1]], k[i - 1][w]);
    			} else {
    				k[i][w] = k[i - 1][w];
    			}
    		}
    	}
    	return k[n][capacity];
    }
    
    var value = [4,5,10,11,13],
    	size = [3,4,7,8,9],
    	capacity = 16,
    	n = 5;
    console.log(dknapsack(capacity,size,value,n));
    

      

  • 相关阅读:
    Oracle查看表或者视图的定义语句
    SpringMvc使用FastJson做为json的转换器(注解方式)
    Centos7安装vsftpd
    linux下的find文件查找命令与grep文件内容查找命令
    Centos7虚拟机下配置静态IP
    替换Jar包内的文件
    Java 获取本机IP地址
    RecyclerView 与 ItemTouchHelper 实现拖拽效果
    Android 开发日常积累
    Android 自定义 View 知识点
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4049921.html
Copyright © 2011-2022 走看看