吃豆機械人

2022-08-20 17:39:10 字數 1646 閱讀 1855

2023年九度互動社群**實習生春季招聘上機考試 

雖然過期,練練也未嘗不是件好事。

時間限制:1 秒記憶體限制:32 兆特殊判題:

題目描述:**公司內部有許多新鮮的小玩具,例如**智慧型機械人。小時候,大家都玩過那個吃豆子的遊戲吧,這機械人就是按照這個遊戲設計的,它會朝著豆子的方向行走。不過機械人還存在乙個bug,他只會朝南和朝東走。現在有一塊空地,分成了n*m個格仔,每個格仔內有一顆豆子。機械人的起點在西北角,終點在東南角。請問機械人從起點到終點有多少種不同的方法。 

輸入:每個案例輸入只有一行,有n和m兩個正整數,n,m均小於等於10^3。由於答案很大,所以答案對10009取餘。 

輸出:對於每個案例,輸出一行,輸出機械人從起點到終點的總方法數。 

樣例輸入:

2 2

3 3

樣例輸出:

2

6

題目咋一看不難。就是使用乙個遞迴,當前點到終點的方法數無非就是向南的方法數與向東走的方法數之和。遞迴下去,當到達邊界時,不管向哪個方向走方法只有一種了,這也就是遞迴的終止條件。馬上得出:

1

int func5(int n, intm)2

7else

811 }

可是問題來了,時間要限制在一秒鐘。當n、m大的時候遞迴就非常慢了。而且這裡沒有考慮溢位問題,題目中已經給出應該模10009,即改最後一句:

return func5(n-1,m)%10009+ func5(n, m-1

)%10009;

所以要使用非遞迴演算法:

分析,如果使用一張n*m的二維陣列儲存,每乙個點到終點的位置,逆著求回去將可以得到結果。細節就不寫了。。。

但其實大部分結果只是乙個中間結果,後來就不再需要,故可以壓縮。壓縮成一維陣列,一維陣列就只使用min(n,m)的大小(根據對稱性可證)。最後有一下**:

1

int func6(int a, intb)2

11else

1216

17 p = (unsigned long *)malloc(sizeof(int)*m);

1819

for (int k=0; k)

2023

24for (i=1; i)

2530

}31 tmp = p[m-1

];32

free(p);

33return

tmp;

34 }

畢。為了找個工作不容易啊,還在掙扎中~ ~~o(>_<)o ~~

修:今做了題目,類似的,求要求不過某一點的路線選擇方法。結果蒙了,手算啊!折騰良久,未果,逐網查。

結果化成了一道數學排列組合題目。由於不管向東或向南總數都要走n+m步。你可以從總步數中選出n向南走(剩餘的向東了),這樣就可以得出c(n+m,n)既是結果了。(也可以為c(n+m,m),相當於你從總步數中選出m向東走,剩餘的向南走)這樣才可以快速的手算出結果。

九度oj 題目1408 吃豆機械人

題目描述 公司內部有許多新鮮的小玩具,例如 智慧型機械人。小時候,大家都玩過那個吃豆子的遊戲吧,這機械人就是按照這個遊戲設計的,它會朝著豆子的方向行走。不過機械人還存在乙個bug,他只會朝南和朝東走。現在有一塊空地,分成了n m個格仔,每個格仔內有一顆豆子。機械人的起點在西北角,終點在東南角。請問機...

好色機械人的豔遇 機械人豔遇 《機械人的旅行》

講述機械人 路遇開房車的 剛剛開始的時候畫風很舒服,直到到了晚上上了她的床之後。畫風速變了!這個女主角聲音超好聽。整個情節實在太流氓了,太猥瑣了!連六六君這樣的老司機都看不下去了!正片在三分五十,不謝 很抱歉,此內容已經失效了!就連六六君也無法恢復了。請欣賞其他有效的內容 當您看到這條資訊的時候,很...

2017 04 19 特種機械人 獵豹機械人介紹

仿生機械人 獵豹機械人 說起機械人,可能由於受名詞中 人 字的影響,大部分人腦海裡出現的可能要麼是憨態可掬 動作靈活的小nao機械人,要麼是彬彬有禮 動作規範的asimo機械人,亦或是電影 人工智慧 裡有著和人一模一樣的外表的大衛。其實,這些機械人都屬於仿人機械人,這些機械人是模仿人的形態和行為而被...