Kalemlerim ve silgi listemiz var. Amaç, tüm silgilerin kalemlere konup konmadığını kontrol etmektir. Bir silgi, çok farklı kalemlere sığabilir. Kalemler en fazla 1 silgide olabilir.Eşleşen algoritma
Tüm silgilerden geçip kurşun kalemlere yapıştıysam, tüm silgi kalemlerine sahip bir çözelti olsa da, kullanılmayan kalemlere uyan silgilerle sonuçlanırım.
Tüm silgi kalemlerine uyan bir kombinasyonu bulmak için hangi algoritmayı kullanabilirim?
public class Eraser(){
public boolean matches(Pencil p){
//unimportant
}
}
public class Pencil(){
}
Sen Constraint satisfaction problem
olarak sorunu formüle edebilirsiniz
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;
}
Uyumlu ölçüt nedir? – ChiefTwoPencils
Bu kalemler ve silgiler hakkında özel bir şey var mı? Kalemlerden daha az silgi varsa, o zaman cevabınız "evet" olur ve eğer kalemlerden daha fazla silgi varsa, cevabınız "hayır" dır. Yani bununla çelişen bir detay var mı? – RealSkeptic
@ChiefTwoPencils Ya eşleşiyor ya da değil. Kriter yok. – user3552325