統計每個月兔子的總數【牛客網】
題意理解
生兔子的問題,一隻小兔子長到第三個月生一隻小兔子,問第n個月兔子數量。
問題分析
生兔子的模型這樣定義,一月大的兔子,2月大的兔子,3月或更大的兔子,兔子的數量是這三種月齡兔子的和。它們的數量變動和月份關係如下,3月兔子的數量等於2月兔子的數量加上3月兔子的數量(2月兔子長大變成3月兔子,3月兔子長大一個月和3月兔子一樣),2月兔子的數量等於1月兔子的數量(一月兔子長大了變成2月兔子),1月兔子的數量是三月兔子的數量(3月大的兔子一個生一個),這樣最終的兔子數量就可以通過這個類似自動機解決了。
這題需要支援多次輸入
其他
這個模型中數量的變化是關鍵。3個變數,1月兔子數量,2月兔子數量,3月兔子數量,分出了這三個變數就可以準確描述問題了。這個思路好巧啊,簡單就是美。
連結
https://github.com/xierensong/learngit/blob/master/ncode/5/5.cpp
相關推薦
統計每個月兔子的總數【牛客網】
題意理解 生兔子的問題,一隻小兔子長到第三個月生一隻小兔子,問第n個月兔子數量。 問題分析 生兔子的模型這樣定義,一月大的兔子,2月大的兔子,3月或更大的兔子,兔子的數量是這三種月齡兔子的和。它們的數量變動和月份關係如下,3月兔子的數量等於2月兔子的數量加上3月兔子的數量(2月兔子長大變
統計每個月兔子總數
數列 star 輸入 ble wid urn bject mon 規律 題目描述 有一只兔子,從出生後第3個月起每個月都生一只兔子,小兔子長到第三個月後每個月又生一只兔子,假如兔子都不死,問每個月的兔子總數為多少? 輸入: 9 輸出: 34 分析 1月大 2月大
【牛客網】陣列題目I---【Python】
class Solution: # array 二維列表 def Find1(self, target, array): # write code here for i in range(len(array)):
劍指Offer行榜【牛客網】練習(六)
1、二叉搜尋樹與雙向連結串列 題目描述: 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成一個排序的雙向連結串列。要求不能建立任何新的結點,只能調整樹中結點指標的指向。 思路: 二叉搜尋樹要轉成排序的雙向連結串列=中序列表+修改連結。既可以把這兩步分開,也可以合起來一起(參照部落格見文末)。
劍指Offer行榜【牛客網】練習(五)
1、棧的壓入、彈出序列 題目描述: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧
劍指Offer行榜【牛客網】練習(四)
1、合併兩個排序連結串列 題目描述: 輸入兩個單調遞增的連結串列,輸出兩個連結串列合成後的連結串列,當然我們需要合成後的連結串列滿足單調不減規則。 思路: 兩個指標依次比較兩個連結串列中的值,選擇小的值連結,將這個指標向後移動一位,繼續比較。當一個指標到末尾時就停止,把另外一個連結串
劍指Offer行榜【牛客網】練習(三)
1、二進位制中1的個數 題目描述: 輸入一個整數,輸出該數二進位制表示中1的個數。其中負數用補碼錶示 程式碼: public class Solution { public int NumberOf1(int n) { String str = Integ
劍指Offer行榜【牛客網】練習(二)
1、旋轉陣列的最小數字 題目描述: 把一個數組最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入一個非減排序的陣列的一個旋轉,輸出旋轉陣列的最小元素。 例如陣列{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該陣列的最小值為1。 NOTE:給出的所有元素都大於0,若
劍指Offer行榜【牛客網】練習(一)
1、二維陣列的查詢 題目描述: 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 思路: 為了避免遍歷陣列,找出第一行中lineIndex,比目
【牛客網】異或計算
你就是一個畫家!你現在想繪製一幅畫,但是你現在沒有足夠顏色的顏料。為了讓問題簡單,我們用正整數表示不同顏色的顏料。你知道這幅畫需要的n種顏色的顏料,你現在可以去商店購買一些顏料,但是商店不能保證能供應所有顏色的顏料,所以你需要自己混合一些顏料。混合兩種不一樣的顏色A和顏色B顏料可以產生(A XOR B)這種顏
字串排序【牛客網】
題意理解 輸入一串字元,對其排序輸出,排序的方式是對大小字母不區分大小寫按字典序輸出,相同字母大小寫保持輸入順序,其他字元位置不變。 問題分析 用vector,string,stable_sort。 3個排序要求中,第一個要求可以重寫比較函式解決,第二個要求可以用stable_sor
刪除字串中出現次數最少的字元【牛客網】
題意理解 給定一個字串,刪除出現字數最少的字元。 問題分析 用map,vector,string,algorithm處理 先用map統計每個字元的數量,再將map的字元數量對當成元素輸入到vector中,然後對數量欄位排序,遍歷vector前面的字元數字對,如果數字變化就跳出。對於最
汽水瓶【牛客網】
題意理解 有n個空瓶,3個空瓶兌換一個新瓶,2個空瓶可借一瓶喝完湊成3個空瓶再兌換一個新瓶還回去。問最多喝幾瓶? 問題分析 用類似進位制轉換的思路,第一輪,n/3得到新瓶數,n%3得到這一輪剩餘空瓶數,將新瓶數+剩餘空瓶數放到第二輪。依次類推,直到n/3 == 0表示沒有新瓶,如果n%3
座標移動【牛客網】
題意理解 輸入一串字元指令,adws分別表示左右上下四個方向,數字表示移動的座標點數,開始位置在(0,0),求最終座標位置。 問題分析 用string庫處理字串,定位分隔符->取子串迴圈處理,直到結束。 其他 記得迴圈處理輸入。 非起點定位的引數序列是(待搜尋字元,起點
密碼驗證合格程式【牛客網】
題意理解 校驗密碼,密碼前提一個,長度超過2;要求有三個,長度超過8,大寫字母,小寫字母,數字和其他字元至少三種,不得有相同的長度超過2的子串。 問題分析 用string,逐個要求分析,長度判斷用size(); 字元型別用陣列下標逐字元統計四種類型,至少三種的判斷轉化為四個型別數量大
火車進站【牛客網】
題意理解 一組火車進站,編號從0到9,數量和順序不定,求所有可能的出站順序 問題分析 用棧資料結構 用窮舉法,先用排列數next_permutation遍歷所有情況,然後驗證序列是否符合出棧的要求。 驗證出棧序列方法,逐個元素遍歷入棧序列,先入棧,當棧不空,比較棧頂元素和出站序列
整數與IP地址間的轉換【牛客網】
題意理解 給出一個ip和整數,分別轉換成整數和ip,轉換規則是ip每個欄位轉換成8為二進位制數,再拼成32位的二進位制數。 問題分析 ip轉整數,按.取各欄位字串,轉化為整數,再按照a*2^24+b*2^16+c*2^8+d公式計算整數。 整數轉ip,分別整除2^24,2^16,2^
成績排序【牛客網】
題意理解 一組學生名和成績,按照升序和降序排序,保持同分數學生前後順序不變(穩定) 問題分析 用STL,結構體儲存name和分數,vector儲存列表,stable_sort進行排序 其他 stable_sort需要記得 cmp謂詞排序只要指定<,>,不需要帶=
簡單錯誤記錄【牛客網】
題意理解 統計同文件名,行號的錯誤記錄數量,要求迴圈只打印8個錯誤記錄 問題分析 思路是逐行讀入錯誤記錄,擷取檔名,行號,這樣就組合成一個列表,再對這個列表的元素統計個數。輸出的結果只能保留最後8個錯誤記錄。 轉1:用string庫作字串處理,有io操作getline(cin,str
提取不重複的整數【牛客網】
題意理解 題意簡單,提取不重複的整數,從一個int整數中從低位到高位依次輸出不重複的整數值 問題分析 不重複想到了用stl模板的set,可以自動剔重。 嘗試了以後,發現set有自動排序的功能,放棄,發現有個unordered_set,於是用之。 發現順序是反的,於是找反向迭代器,