これは、「スコアが最大になる製品へのすべての顧客の割り当てを見つけなければならない」に対する(Java)ソリューションです。
C のお客様と P 製品の場合、O(CP) 時間で実行されます。
score() 関数の定義が提供されていないため、このコードをテストしていないことに注意してください。
Map<Customer, Product> solve(List<Customer> customers, List<Product> products)
{
Map<Customer, Product> result = new HashMap<Customer, Product>();
for (Customer customer : customers)
{
int maxScore = Integer.MIN_VALUE;
Product bestProduct = null;
for (Product product : products)
{
int currentScore = score(customer, product);
if (currentScore > maxScore)
{
maxScore = currentScore;
bestProduct = product;
}
}
if (bestProduct != null)
{
result.put(customer, product);
}
}
return result;
}