javascript - 是否有用于 "matrix style"比较的模式?

标签 javascript algorithm

是否存在适用于以下决策风格的规范算法或模式:您有 n 个资源(假设现在有两个,资源 1 和资源 2)。考虑伪代码:

Request for X units, requiring resources 1 and 2 {
If (enough of resource 1)
   if (enough of resource 2)
      fulfill request for X units. 
   else (not enough of resource 2)
      partially fulfill, to max of resource 2
else (not enough of resource 1)
   if (there is enough of resource 2)
      partially fulfill, to max of resource 1. 
   else (not enough of resource 2)
      partially fulfill, to max of resource 2
}

当 n > 2 时,事情很快就会失控,并且有很多重复的代码。有没有更有效的方法来实现这个算法?

如果重要的话,我正在用 Javascript 编程来解决这个问题。

最佳答案

好吧,这是一个示例,您可以在其中设置任意数量的资源,将它们与一个键相关联,并设置您想要的单位数量和每种资源的成本。有 2 个功能,一个是使用您拥有的资源获得最大可能的单位,另一个是花费这些资源:

function Request(qty){
    this.quantity = qty; // quantity of units to make
    this.required = {}; // required resources
    var request = this;

    this.checkAvailability = function(resources){
        var available = request.quantity;
        var spent = {};
        var left = {};
        for(var key in request.required){ // for each required resource
            var max = Math.min(request.quantity, Math.floor(resources[key].quantity/request.required[key])) // set max as wanted quantity or available quantity if it is less than wanted
            available = Math.min(max, available) // update max of units you can make 
        }
        return available
    }

    this.spendResources = function(resources, qty){ // spend required resources
        for(var key in request.required){
            resources[key].quantity -= request.required[key]*qty;
        }
    }

}

function Resource(qty){
    this.quantity = qty;
}

var available = {
    1: new Resource(200),
    2: new Resource(140)
}

var request = new Request(7)
request.required = {1: 40, 2: 30}
var availableQty = request.checkAvailability(available)
request.spendResources(available, availableQty)
console.log(availableQty, available)

工作 Jsfiddle:http://jsfiddle.net/fk6coz8a/

关于javascript - 是否有用于 "matrix style"比较的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27805598/

相关文章:

algorithm - C4.5 决策树 : can deeps be higher in linear separable data then non-linear separable?

string - KMP前缀表

javascript - 在 AngularJS 中传递这个参数

javascript - 如何使用 Bootstrap 添加条件按钮?

javascript - 样式不适用于 Safari/Firefox 中的 LitElement

javascript - 使用express.Router()时如何从HTML表单传递用户输入

C++有效比较整数序列(按相对顺序)

在 N 个字符串中查找公共(public)子字符串的算法

python - Karatsuba 算法 - 我的实现错误

javascript - 脚本只运行一次