To jest trudne, przynajmniej dla moich minimalnych umiejętności c.Biorąc pod uwagę tablicę, znajdź kombinacje n liczb, które są mniejsze niż c
Zasadniczo użytkownik wprowadza listę cen do tablicy, a następnie żądaną liczbę przedmiotów, które chce kupić, a ostatecznie maksymalny koszt nie może przekroczyć.
Muszę sprawdzić, ile kombinacji żądanej liczby elementów jest mniejszych lub równych podanemu kosztowi.
Jeśli problem polegał na ustalonej liczbie elementów w kombinacji, powiedzmy 3, byłoby to o wiele łatwiejsze dzięki trzem pętlom wybierającym każdą cenę i dodawaniu ich do testu.
Miejsce, w którym się znajdujesz, to wymóg, aby użytkownik wprowadził dowolną liczbę elementów, aż do liczby elementów w tablicy.
To jest to, co postanowiłem na początku, zanim zdałem sobie sprawę, że użytkownik może określić kombinacje dowolnej liczby, a nie tylko trzy. Został stworzony przy pomocy podobnego tematu tutaj, ale znowu działa tylko wtedy, gdy użytkownik określi, że chce 3 elementy na kombinację. W przeciwnym razie nie działa.
// test if any combinations of items can be made
for (one = 0; one < (count-2); one++) // count -2 to account for the two other variables
{
for (two = one + 1; two < (count-1); two++) // count -1 to account for the last variable
{
for (three = two + 1; three < count; three++)
{
total = itemCosts[one] + itemCosts[two] + itemCosts[three];
if (total <= funds)
{
// DEBUG printf("\nMatch found! %d + %d + %d, total: %d.", itemCosts[one], itemCosts[two], itemCosts[three], total);
combos++;
}
}
}
}
O ile mogę powiedzieć, nie ma prostego sposobu na dostosowanie go do elastyczności w oparciu o pożądaną liczbę elementów na kombinację.
Byłbym wdzięczny za udzieloną pomoc.
więc funkcja ta zwróci wszystkie możliwe kombinacje określonego rozmiaru w tablicy? Również zadeklarowałeś funkcję jako pustkę, ale następnie kontynuujesz zwracanie z niej wartości. – Patrick
OK, więc widzę, że tak nie jest. Zakładam, że uruchomiłeś tę funkcję w innej pętli, która zwiększa indeks początkowy i dodaje zwróconą wartość 1 lub 0 z funkcji do oryginalnej zmiennej combos. – Patrick
@Patrick Naprawiłem kilka drobnych błędów i dodałem wersję demo. Proszę spojrzeć na link. – dasblinkenlight