由一道筆記題想到的

最近看到一道樂視的筆記題,比較有意思扳埂。大意如下:

一個螞蚱,第一跳的距離是1,第二跳的距離是2,...,第N跳的距離是N.

?編程求要跳到M位置业簿,最少的跳的次數(shù)是多少。

首先要保證M位置阳懂,可以通過這種方式跑到梅尤。


我第一反應(yīng)想到另一道小明?折返跑的??題目柜思。

小明在400米的圈的跑道上,折返跑巷燥,第一?段跑10米赡盘,第二?段跑20米,...,第N段跑N*10米,問小明要跑多少米缰揪,可以回到起點陨享。

這里面每跑兩次相當(dāng)于?前進(jìn)/后退了10米邀跃。所以以這種折返跑的方式霉咨,肯定可以跳到任意位置。對應(yīng)的跳的次數(shù)就是2*M拍屑。當(dāng)然這種跳法肯定不是最???優(yōu)解途戒。(A方法)

最簡單的優(yōu)化,一直跳到距離最接近M的位置僵驰,再用?兩?步加1(或者兩??步減1)的方式跳到M點喷斋。需要注意,這里面有兩種情況蒜茴,一種是跳到M之前星爪,再?兩?步加1,一種是跳到M之后粉私,再兩步減1,需要根據(jù)哪一頭的距離更?短來判斷顽腾。(B方法)

到這?一步,我本來認(rèn)為已經(jīng)找到最?優(yōu)解诺核。不過還是被同事逼問抄肖,會不會還有更少次數(shù)的?跳法。細(xì)想來窖杀,第N步時漓摩,可能跳到位置,就是對一個數(shù)組[1,2,...,N]入客,隨機?附上正負(fù)管毙,再累加。而每在一處?x位置正變負(fù)桌硫,就相當(dāng)于把累加和減了2*x,對于上面方法中夭咬,假定一直往前跳,第?x?跳的?位置是d(x).跳過了M位置?铆隘,到d(n+1)皱埠,再回頭逼近的情況,如果d(n+1)-M為偶數(shù)咖驮,那么只需要把這個?距離?除2的?跳步反向边器,就可以得到M。

舉例為:如果要跳到53托修,第10?跳忘巧,一?直向前跳,會跳到55

(55-53)/2=1

所以只要把這10跳中第1跳睦刃,由向前跳砚嘴,改為向后跳,即可得到53涩拙。

如果d(n+1)-M為奇數(shù)要怎么算际长?也可以?選跳到最接近到的偶數(shù)位置,也就是M+1的位置兴泥,再通過兩步減1的方法工育,到M位置,這種跳法搓彻,最多就是n+1+2次跳如绸。?還有一些特殊情況,比如

如果M等于d(n)+1旭贬,且d(n+1)-M為奇數(shù)的情況怔接,那么就只用跳到d(n),再用兩?步加1的方法到M稀轨,先到M+1再兩?步減1的?方式扼脐,要少一跳。(特殊情況S)

說到這里奋刽,這個算法就比較麻煩了瓦侮,情況判斷很多。(C方法)

好吧杨名,我也覺得看著有點暈脏榆,寫起代碼也好?寫。?難道最??精減的解法台谍,就一定要這么麻煩须喂。然后我?又想到一種特??殊情況。

?對于(d(n+1)-M)為奇數(shù)的情況趁蕊,如果我們直接跳到d(n+2),而且d(n+2)-M為???偶數(shù)的話坞生,通過反向(d(n+2)-M)/2也可以得到M,這種就只需要n+2??步掷伙。比如是己,跳到52按?照方法C,需要選跳10步,第1步反向任柜,到53卒废,?再+11,-12到52沛厨。需要12步。按照新?方法摔认,d(11)=66, (66-52)/2=7,反向第7步即可得到52逆皮,只需要用11步。

按照参袱,當(dāng)然也有(d(n+1)-M)為奇數(shù)电谣,(d(n+2)-M)也為奇數(shù)的情況,這?時候抹蚀,可以再多?跳一?步剿牺,這時(d(n+3)-M)肯定?是偶數(shù)了。這種情況(d(n+3)-M)/2會大于n+3,需要反轉(zhuǎn)兩個數(shù)才能得到M,這兩?個?數(shù)环壤,可以是任意兩個相加和為(d(n+3)-M)/2的兩個步數(shù)晒来,其實方法C中對這種情況解法,次數(shù)也是n+3,而且是必反轉(zhuǎn)n+3的那種解法镐捧。

所以最終版是潜索,先?找到在M所在的d(n)和d(n+1)區(qū)間。再通過依次??判斷d(n+1)-M,d(n+2)-M,d(n+3)-M的奇偶懂酱,來判斷所需要的步數(shù)竹习。


其實,我就想??吐?槽這TM根本就是一道數(shù)學(xué)題A形整陌!


(代碼就不寫了吧。瞎领。泌辫。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末九默,一起剝皮案震驚了整個濱河市震放,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驼修,老刑警劉巖殿遂,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乙各,居然都是意外死亡墨礁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門耳峦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恩静,“玉大人,你說我怎么就攤上這事蹲坷∈磺” “怎么了邑飒?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長级乐。 經(jīng)常有香客問我幸乒,道長,這世上最難降的妖魔是什么唇牧? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮聚唐,結(jié)果婚禮上丐重,老公的妹妹穿的比我還像新娘。我一直安慰自己杆查,他們只是感情好扮惦,可當(dāng)我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亲桦,像睡著了一般崖蜜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上客峭,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天豫领,我揣著相機與錄音,去河邊找鬼舔琅。 笑死等恐,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的备蚓。 我是一名探鬼主播课蔬,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼郊尝!你這毒婦竟也來了二跋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤流昏,失蹤者是張志新(化名)和其女友劉穎扎即,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體横缔,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡铺遂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茎刚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片襟锐。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖膛锭,靈堂內(nèi)的尸體忽然破棺而出粮坞,到底是詐尸還是另有隱情蚊荣,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布莫杈,位于F島的核電站互例,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏筝闹。R本人自食惡果不足惜媳叨,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望关顷。 院中可真熱鬧糊秆,春花似錦、人聲如沸议双。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽平痰。三九已至汞舱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宗雇,已是汗流浹背昂芜。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逾礁,地道東北人说铃。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像嘹履,于是被迫代替她去往敵國和親腻扇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容