Autor | Zpráva | ||
---|---|---|---|
nemeja Profil |
Pěkný večer,
mám takový problém. Dostal jsem zadáno 6 čísel, které by mi určitou kombinací měli dát konečný výsledek 49. Nevím jak to spočítat na papíře, tak mě napadlo, že to zkusím pomocí PHP a to tak, že všechny hodnoty v poli sečtu a zároven odečtu, uložím do dalšího pole a takhle budu postupovat dokud to nenajde výsledek 49. Je tento postup správný? Pro náhled sem přidám ještě kod: // upravení nastavení PHP ini_set("memory_limit","-1"); ini_set("max_execution_time","0"); // zadaná čísla $pole = array( 1 => 110, 2 => 52, 3 => 91, 4 => 87, 5 => 63, 6 => 44); while( true ){ foreach( $pole as $nazev => $hodnota ){ unset( $pole[$nazev]); foreach( $pole as $nazev_1 => $hodnota_1 ){ if( ( $hodnota + $hodnota_1 ) == 49 ){ echo "$nazev + $nazev_1 == 49"; break; } else { $pomocne[ $nazev . " + " . $nazev_1] = $hodnota + $hodnota_1; } if( ( $hodnota - $hodnota_1 ) == 49 ){ echo "$nazev - $nazev_1 == 49"; break; } else { $pomocne[ $nazev . " - " . $nazev_1] = $hodnota + $hodnota_1; } } } $pole = $pomocne; } |
||
juriad Profil |
#2 · Zasláno: 14. 11. 2012, 21:20:18
rekapitulace:
máš zadáno 6 čísel (označme N1 -- N6) a jedno další (označme S) musíš sečíst všechna N, přičemž některé s kladným znaménkem, jiné se záporným, tak aby vyšlo S chápu to správně? |
||
nemeja Profil |
juriad:
prakticky jo :D ale to je jen moje domněnka, že se to bude pouze sčítat a odčítat :D co jsem tak koukal, tak na to asi bude zapotřebí kombinatorika, ale to jsem trošku z netu nepobral. :) |
||
juriad Profil |
#4 · Zasláno: 14. 11. 2012, 21:30:29
pokud se má každé číslo použít právě jednou, tak je to ekvivalentní úloze dvou loupežníků:
na vstupu bude množina předmětů (s přidaným S): {N1, N2, N3, N4, N5, N6, S} a ty je chceš rozdělit na dvě množniny se shodným součtem: například N1+N2+N3+N4 = N5+N6+S pak by řešením bylo: N1+N2+N3+N4-N5-N6 = S najdi si něco o problému dvou loupežníků |
||
Časová prodleva: 11 let
|
0