java青蛙跳台階問題(小青蛙跳台階)

本文目錄一覽:

青蛙跳(二) 時間限制(普通/Java):1000MS/3000MS 運行內存限制:65536KByte 總提交: 63 測試通過: 21 描述

lpln[pdklp[obpfd op[[ [p [pp[[p[p[[iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiimmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmoimuomu ou moiuiu iiiimumviuhginhjvgkrt eynvug yn5ve4yrgvui huievthuy vh5hynt htgvniuhv

斐波那契數列和青蛙跳問題

原文鏈接:

遞歸由於調用自身,而函數調用是有時間和空間的消耗的:每一次函數調用,都需要在內存棧中分配內存空間以保存參數、返回地址及臨時變數,而且往棧里壓入數據和彈出數據都需要時間。

另外,遞歸中有可能很多計算都是重複的,從而對性能帶來很大的負面影響。遞歸的本質是把一個問題分解成兩個或者多個小問題。如果多個小問題存在互相重疊的部分,那麼久存在重複的計算。

斐波那契數列

效率最低的解法

青蛙跳題目(擴展)

一隻青蛙一次可以跳上一個台階,也可以跳上2個台階,求青蛙跳上一個n級台階共有多少總跳法

思路:如果只有1級台階,顯然只有一種跳法,如果兩個台階,就來有種跳法

一般情況下,我們把n級台階時的跳法看成是n的函數,記為f(n)。當n2時,第一次跳的時候就有兩種不同的選擇:一是第一次只跳1級,此時跳法數目等於後面剩下的n-1級台階的跳法數目,即為f(n-1);另一種選擇是第一次跳2級,此時跳法數目等於後面剩下的n-2級台階的跳法數目即為f(n-2)因此n級台階的不同跳法總數是f(n)=f(n-1)+f(n-2)

青蛙跳擴展2

如果一隻青蛙一次可以跳上1級台階,也可以跳上2級台階。。。它也可以跳上n級台階,此時青蛙跳上一個n級台階共有集中跳法,用數學的歸納法可以證明是f(n)=2^{(n-1)}

格子覆蓋問題(擴展)

我們可以用2×1 的小矩形橫著或者豎著去覆蓋更大的矩形如8個2×1 的小矩形無重疊的覆蓋一個2×8的大矩形,共有幾種方法

思路:我們先把2×8的覆蓋方法記為f(8)用第一個1×2小矩形去覆蓋大矩形的最左邊兩個選擇,豎著或者橫著放,當豎著放,右邊還剩下2×7的區域,它的覆蓋方法即為f(7)。然後考慮橫著放的情況。當1×2的小矩形橫著放在左上角的時候,左下角必須和橫著放一個1×2的小矩形,而在右邊還剩下2×6的區域,這種情形下的覆蓋方法記為f(6),因此f(8)=f(7)+f(6)也是個斐波那契數列

希音java面試有演算法嗎

有。常見的如下:

一是字元串,如果IDE沒有代碼自動補全功能,所以你應該記住下面的這些方法。

二是鏈表,在Java中,鏈表的實現非常簡單,每個節點Node都有一個值val和指向下個節點的鏈接next。鏈表兩個著名的應用是棧Stack和隊列Queue。

三是樹,這裡的樹通常是指二叉樹,每個節點都包含一個左孩子節點和右孩子節點。

四是排序,五是遞歸vs.迭代。

六是動態規劃,動態規劃是解決下面這些性質類問題的技術:一個問題可以通過更小子問題的解決方法來解決(即問題的最優解包含了其子問題的最優解,也就是最優子結構性質)。

有些子問題的解可能需要計算多次(也就是子問題重疊性質)。子問題的解存儲在一張表格里,這樣每個子問題只用計算一次。需要額外的空間以節省時間。爬台階問題完全符合上面的四條性質,因此可以用動態規劃法來解決。

青蛙跳問題(坐標系問題)強人來教我

假設A、B、C、P各點坐標為(xa,ya),(xb,yb),(xc,yc),(xp,yp)

第一步,青蛙從P點跳到關於A的對稱點P1,坐標為:(2xa-xp,2ya-yp);

第二步,青蛙從P1跳到關於B的對稱點P2;坐標為:

(2xb-(2xa-xp),2yb-(2ya-yp))

即:(2xb-2xa+xp,2yb-2ya+yp)

第三步,青蛙從P2跳到關於C的對稱點P3;坐標為:

(2xc-(2xb-(2xa-xp)),2yc-(2yb-(2ya-yp)))

即:(2xc-2xb+2xa-xp,2yc-2yb+2ya-yp)

第四步,從P3跳到關於A的對稱點P4;坐標為:

(2xa-(2xc-2xb+2xa-xp),2ya-(2yc-2yb+2ya-yp))

即:(-2xc+2xb+xp,-2yc+2yb+yp)(關於先C後B點的對稱)

第五步:(2xb+2xc-2xb-xp,2yb+2yc-2yb-yp)

即:(2xc-xp,2yc-yp)(關於C點對稱)

第六步:(2xc-2xc+xp,2yc-2yc+yp)即:(xp,yp),即P點

因此式6次重複回到P點

因此,青蛙跳完6666步後落在P點位置上。

JAVA編程題求解?

這種作業,最好還是結合書上知識,理解清楚老師布置的目的、怎麼實現的

public class Frog {

private String name;

private Integer distance = 0;

//跳躍方法

void jump() {

//隨機10-20

int jumpDistance = (int) (10 + Math.random() * (20 – 10 + 1));

this.distance += jumpDistance;

}

//帶名字構造方法

Frog(String name) {

this.name = name;

}

public static void main(String[] args) {

Frog a = new Frog(“a”);

Frog b = new Frog(“b”);

Frog c = new Frog(“c”);

Frog d = new Frog(“d”);

for (int i = 0; i 10; i++) {

a.jump();

b.jump();

c.jump();

d.jump();

}

System.out.println(a.name + “總距離=” + a.distance);

System.out.println(b.name + “總距離=” + b.distance);

System.out.println(c.name + “總距離=” + c.distance);

System.out.println(d.name + “總距離=” + d.distance);

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getDistance() {

return distance;

}

public void setDistance(Integer distance) {

this.distance = distance;

}

}

JS動態規劃——青蛙跳台階問題

一隻青蛙一次可以跳上1級台階,也可以跳上2級台階。求該青蛙跳上一個 n 級的台階總共有多少種跳法。

答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。

此類求 多少種可能性 的題目一般都有 遞推性質 ,即 f(n)f(n) 和 f(n-1)f(n−1)…f(1)f(1) 之間是有聯繫的。

設跳上 n 級台階有 f(n) 種跳法。在所有跳法中,青蛙的最後一步只有兩種情況: 跳上 1 級或 2 級台階。

當為 1 級台階: 剩 n-1 個台階,此情況共有 f(n-1) 種跳法;

當為 2 級台階: 剩 n-2 個台階,此情況共有 f(n-2) 種跳法。

f(n) 為以上兩種情況之和,即 f(n)=f(n-1)+f(n-2) ,以上遞推性質為斐波那契數列。本題可轉化為 求斐波那契數列第 n 項的值 。

青蛙跳台階問題: f(0)=1 , f(1)=1 , f(2)=2,;

斐波那契數列問題: f(0)=0 , f(1)=1 , f(2)=1 。

第n階的數量由前兩階的數量相加而來,故用動態規劃。

arr[i]表示第i階有arr[i]種方法

遞推公式:arr[i] = arr[i – 1] + arr[i – 2]

arr數組初始化:arr = [null, 1, 2],arr[0]沒有意義,從i=3開始循環

遍歷順序:從前往後

原創文章,作者:HDSIK,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130551.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HDSIK的頭像HDSIK
上一篇 2024-10-03 23:29
下一篇 2024-10-03 23:29

相關推薦

  • 台階走法遞歸

    台階走法遞歸是一個經典的遞歸問題,在計算機演算法中有著廣泛的應用。本篇文章將從遞歸的思想出發,詳細分析如何解決這個問題。 一、遞歸基礎知識 遞歸是指一個函數直接或間接地調用自身。遞歸…

    編程 2025-04-29
  • 鬧鬧天宮英雄小青技能介紹

    鬧鬧天宮英雄小青怎麼樣?鬧鬧天宮英雄小青有哪些技能?小編這裡就為大家介紹了鬧鬧天宮英雄小青技能,希望對大家有所幫助~ 鬧鬧天宮英雄小青技能介紹 仙友們: 為了讓更多新入坑的萌新仙友…

    2025-01-01
  • 青蛙跳台階實現原理與代碼示例

    一、問題背景 青蛙跳台階是一道經典的演算法問題,在程序員的學習路線中尤為重要。問題描述:一個青蛙可以跳上1級台階,也可以跳上2級。求該青蛙跳上n級台階有多少種跳法。 首先,我們可以通…

    編程 2024-11-15

發表回復

登錄後才能評論