✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunik

3

Küsimus: Ronite trepist. Tippu jõudmiseks kulub n sammu. Iga kord saate teha 1 või 2 sammu. Kui palju erinevaid viise tippu jõudmiseks?

Probleemi kirjeldus: http://oj.leetcode.com/problems/climbing-stairs/

See probleem võib esmapilgul tunduda keeruline, kuid kui te hetkeks järele mõtlete, võib see osutuda nii lihtsaks. Vastus on Fibonacci numbrid (vt siit, siit )

Algsed Fibonacci numbrid on määratletud jadadena:

Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunik

Selle probleemi lahendamiseks peame lihtsalt veidi muutma:

Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunikja Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunikkuna ainult 1 sammu jaoks on ainult 1 eristatav viis ja 2 sammu jaoks, on meil kaks lahendust: 1 + 1 või 2.

Ülejäänud on nagu Fibonacci seeria. Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunikSest praegusest positsioonist oleme tõenäoliselt kahest eelmisest positsioonist, F(n-1) ja F(n-2) .

Võite kasutada rekursiooni, kuid seda saab lahendada tõhusama iteratiivse lahendusega.

Või eelistate lihtsamat rekursiivset funktsiooni:

class Solution { public:     int climbStairs(int n) {         if (n == 1) return 1;         if (n == 2) return 2;         return climbStairs(n - 1) + climbStairs(n - 2);     } };

Märkus. Rekursiiv annab  testis 44 väärtuse TIME LIMIT EXCEEDED. Seda seetõttu, et rekursiivne funktsioon arvutab tavaliselt vaheväärtusi mitu korda. Näiteks Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunik, Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunik. Kodeerimisharjutus – trepist üles ronimine – Fibonacci numbrid – C++ – võrgukohtunik arvutatakse kaks korda.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem