私は鉛筆のリストと消しゴムのリストを持っています。すべての消しゴムを鉛筆でかけることができるかどうかを確認することが目標です。消しゴムは、複数の異なる鉛筆に適合することがあります。鉛筆は最大で1つの消しゴムを持つことができます。マッチングアルゴリズム
すべての消しゴムをループして鉛筆で塗りつぶしてしまうと、すべての消しゴムが鉛筆で覆われているという解決策があるにもかかわらず、私は空の鉛筆にはならない消しゴムで終わります。
鉛筆のすべての消しゴムに適合する組み合わせを見つけるのに、どのアルゴリズムを使用できますか? Constraint satisfaction problem
変数は、例えばだろうとあなたが問題を定式化することができます
public class Eraser(){
public boolean matches(Pencil p){
//unimportant
}
}
public class Pencil(){
}
私の試み
public boolean doMatch(List<Eraser> erasers, List<Pencil> pencils){
for (Eraser e : erasers) {
boolean found = false;
Iterator it = pencils.iterator();
while (it.hasNext()) {
Pencil p = (Pencil) it.next();
if (e.matches(p)) {
found = true;
it.remove();
break;
}
}
if (!found) {
return false;
}
}
return true;
}
一致する基準は何ですか。 – ChiefTwoPencils
鉛筆や消しゴムについて特別なことはありますか?もし鉛筆よりも消しゴムが少なければ答えは「はい」、鉛筆よりも消しゴムが多い場合は答えは「いいえ」と思われます。それに反する細部はありますか? – RealSkeptic
@ChiefTwoPencilsそれは一致するかどうかです。基準はありません。 – user3552325