• js贪心算法---背包问题


    		/*
    		 * @param {Object} capacity 背包容量 6
    		 * @param {Object} weights  物品重量 [2,3,4]
    		 * @param {Object} values   物品价值  [3,4,5]
    		 */
    		
    		//贪心算法,只能算,可以分割的物品,如果不能分割物品,只能得到近似解,不分割物品,可以使用动态规划
    		//1、计算每件商品的(价格/质量),即单位质量的价值
    		//2、将单位质量价值排序
    		//3、逐个取出
    		
    		console.log(tanx(6,[2,3,4],[3,4,5]));
    		
    		function tanx(capacity,weights,values){
    			var list  = [];
    			for(var i = 0,len = weights.length; i < len; i++){
    				list.push({
    					num:i+1,  //第几件商品
    					w:weights[i], //重量
    					v:values[i],
    					rate:values[i]/weights[i]  
    				});
    			}
    			
    			list.sort(function(a,b){
    				if(a.rate  > b.rate){
    					return -1;
    				}else{
    					return 1;
    				}
    			});
    			
    			var selects = [];
    			var total = 0;
    			for(var i = 0,len = list.length; i < len; i++){
    				var item = list[i];
    				
    				if(item['w'] <= capacity){
    					selects.push({
    						num:item.num,
    						rate:1 ,       //完整的商品记录为1
    						v:item.v,
    						w:item.w
    					});
    					
    					total = total + item.v;
    					capacity = capacity - item.w;
    				}else if(capacity > 0){
    					//选取不完整的商品
    					var rate = capacity/item['w'];
    					var v = item.v*rate;
    					selects.push({
    						num:item.num,
    						rate: rate,
    						v:item.v*rate,
    						w:item.w*rate
    					});
    					total = total + v;
    					break;
    				}else{
    					break;
    				}
    			}
    			
    			return {
    				selects,
    				total
    			}
    		}
    

      

  • 相关阅读:
    mysql升级大致
    初始化配置文件的使用:/etc/my.cnf
    mysql用户管理
    MySql的逻辑结构(抽象结构)与物理结构
    5.7与5.6版本在部署方面的改变
    MySql服务器进程结构
    MySql服务器构成 --实列
    mysql客户端与服务器端模型
    RDBMS和NoSQL区别即主流sql
    MySql基本操作
  • 原文地址:https://www.cnblogs.com/muamaker/p/9391333.html
Copyright © 2020-2023  润新知