Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Potrebujem vytovoriť program který načte řetězec cifer na první řádce a celé číslo N na řádce druhé. Program vloží znaky +, * mezi zadané cifry tak, aby hodnota vytvořeného výrazu byla N
napr. vstup: 857051
20
vystup: 8+5+7+0*5*1
alebo
vstup: 98706543
103
vystup: 9+87+0*65+4+3
Offline
Ahoj, teoreticky to lze udělat zkoušením všech možností, prakticky bude mít ten výpočet velkou časovou složitost. A obávám se že nic rychlého nepůjde, ale třeba ano...
Prostě mezi každé dvě číslice můžeš vložit jednu ze dvou operací nebo nic.
Offline
Ahoj, řekl bych, že při použití hrubé síly bude pro [mathjax]n[/mathjax] cifer na vstupu zapotřebí [mathjax]3^{n-1}[/mathjax] kroků výpočtu (pro větší počet cifer neřešitelné).
Když nám bude stačit první správné řešení, asi skončíme dřív. Pokud budeme chtít všechna řešení, musíme pokračovat do hořkého konce.
Když úloha nemá řešení, asi budeme muset spočítat taky všechno.
Další zkracování výpočtů bude asi záviset na zadané hodnotě výsledku [mathjax]N[/mathjax].
Např.:
1. Protože známe nejmenší a největší možnou hodnotu výsledku,úloha nemá řešení, když je [mathjax]N[/mathjax] mimo tyto meze. (Které to jsou?)
2.Protože známe [mathjax]N[/mathjax], můžeme každý krok výpočtu zabrzdit po dosažení [mathjax]N[/mathjax] - zůstává stejný počet kroků
3. Když je [mathjax]N[/mathjax] čtyřciferné, nebudeme sčítat větší než čtyřciferné skupiny- snižuje se počet kroků
atd.
Nevím nevím, jestli se to dá nějakou fintou zásadně zjednodušit...
Offline
↑ osman:
Asi nedá. Obecně to má exponenciální složitost, a lehce mi to připomíná hledání vhodného řešení logického výrazu - což je NP-úplný problém.
Na druhou stranu, pokud těch číslic bude jen pár (jako třeba do 10), tak asi není problém to na počítači řešit. Předpokládám, že jde o úlohy "z matematických olympiád", a že není záměr řešit zadání, co tam má 60 číslic.
Offline
Jen pozor na to násobení 0 - to je jediný případ, kdy se mezivýpočet sníží a tak může některé heuristiky nabourat.
Offline