Mam listę ołówków i listę gumek. Celem jest sprawdzenie, czy wszystkie gumki można umieścić na ołówkach. Gumka może zmieścić się na wielu różnych ołówkach. Ołówki mogą mieć najwyżej 1 gumkę.Algorytm dopasowania
Jeśli po prostu przejdę przez wszystkie gumki i położy je na ołówkach, skończę z gumkami, które nie pasują do niezamocowanych ołówków, mimo że istnieje rozwiązanie, które ma wszystkie gumki na ołówkach.
Jakiego algorytmu użyć, aby obliczyć kombinację, która pasuje do wszystkich gumek do ołówków?
public class Eraser(){
public boolean matches(Pencil p){
//unimportant
}
}
public class Pencil(){
}
Moja próba
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;
}
Jakie są pasujące kryteria? – ChiefTwoPencils
Czy jest coś wyjątkowego w tych ołówkach i gumkach? Wydaje się, że jeśli jest mniej gumek niż ołówków, to twoja odpowiedź brzmi "tak", a jeśli jest więcej gumek niż ołówków, twoja odpowiedź brzmi "nie". Czy istnieje jakiś szczegół, który temu przeczy? – RealSkeptic
@ChiefTwoPencils Pasuje albo nie. Nie ma żadnych kryteriów. – user3552325