Wojciechovsky
25.08.2016, 12:04:07
Cześć!
Próbuję napisać aplikację w PHP, która odczytuje liczby z bazy danych, a następnie sprawdza która suma liczb jest podzielna przez 10, 100 lub 1000 i jednocześnie mniejsza od 1000. Na koniec wypisze te liczby.
Przykładowe dane wejściowe:
700, 8, 4, 20, 5, 30, 80 , 300, 2, 90
Wynik:
700, 300
8, 2
20, 80
8, 2, 90
Nie mam kompletnie pojęcia jak się do tego zabrać, zwłaszcza że nie jest sprecyzowane ilu liczb ma być to suma. Będę wdzięczny za pomoc/kawałek kodu.
emstawicki
25.08.2016, 12:37:11
1. Tworzysz wszystkie możliwe sumy (https://pl.wikipedia.org/wiki/Kombinatoryka)
2. Wykluczasz sumy większe od 1000.
3. Sprawdzasz czy reszta z dzielenia przez 10, 100 lub 1000.
Jak nie ma sprecyzowanej wielkości danych wejściowych dzielników i innych rzeczy korzystaj z pętli
for z ograniczeniem
count oraz
foreach
trueblue
25.08.2016, 13:30:23
Możesz też sprawdzać podzielność według zasady: jeśli liczba kończy się jednym zerem, to jest podzielna przez 10, kończy się dwoma zerami, podzielna przez 100, itd.
Wojciechovsky
25.08.2016, 14:11:02
Dziękuję za pomoc.
W jaki sposób powinny zostać kombinacje 3 oraz 4 elementowe?
Dla dwuelementowych mam następujacy kod:
$tab1[0] = 265;
$tab1[1] = 430;
$tab1[2] = 550;
$tab1[3] = 60;
$tab2 = $tab1;
echo "Dwuelementowe: <br>"; for($i=0;$i<$ilosc;$i++)
{
$j=$i+1;
while($j<$ilosc)
{
echo $tab1[$i]." + ".$tab2[$j]. "="; echo $tab1[$i]+$tab2[$j].'<br/>'; $j++;
}
}
emstawicki
26.08.2016, 07:08:06
Teraz każda dwuelementowa może tworzyć trójelementowe kombinacje, oczywiście z wykluczeniem tych dwóch, które dają x. Potem każda trójelementowa tworzy ... i tak dalej aż osiągniesz n po k.
http://phpedia.pl/wiki/Rekurencja