原创 向量點乘最小值

兩個n維的向量,向量的點乘是指將向量對應維度的乘積相加,但是我們可以將向量維度交換下可以得到更小的向量點乘,例如3維向量:【1, 3, −5】和【4, −2, −1】,最小向量點乘爲-27,即將維度變爲:[3,1,-5]和[-2,-1,

原创 自己第一個控制檯的遊戲——貪喫蛇

一直想自己寫個遊戲玩玩,好像很厲害的樣子,終於今天下定決心寫了個最經典的休閒的小遊戲——貪喫蛇,當然也有借鑑別人的程序,但是整個代碼都是和別人不一樣的,直接上代碼吧: #include <conio.h> #include <iostre

原创 LeetCode 解碼方法(DFS,遞歸,動態規劃)

題目: 一條包含字母 A-Z 的消息通過以下方式進行了編碼: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 給定一個只包含數字的非空字符串,請計算解碼方法的總數。 示例 1: 輸入: "12" 輸出: 2 解釋: 它可以

原创 分治——合併排序

分治策略中有一個經典的算法就是合併排序,這個算法的精髓也是分治二字,分而治之。將一個大規模的問題分割成若干個同樣的小問題,小問題的規模很小,很容易解決,解決了小的問題後再對這些小問題的結果進行合併得到大規模問題的解答。 合併排序便是分治策

原创 堅持c++,真正掌握c++(4)

這幾天複習了c++primer的第12章類的講解,雖然之前這一章也看了幾遍,但是我終究覺得書讀百遍其義自現,現在我給出一些我學習的心得,歡迎大家一起探討。 首先,類可以說是c++的靈魂,正因爲c++中有類的出現,提高了代碼的複用率,實現了

原创 獨特區間的編程

所謂獨特區間就是一個數組中若某一段區間中的數值都是兩兩不同的,那麼這個區間就是獨特區間,編程要求:輸入兩行,第一行爲輸入數組的元素的個數,第二行爲數組的元素,以空格區分,輸出爲一行,包含一個整數爲最終的答案。 代碼如下 #include

原创 堆排序

先看下堆的概念:堆是一種數據結構,邏輯上是一種完全的二叉樹,在存儲上是數組對象。 堆分爲小頂堆和大頂堆,顧名思義:小頂堆是指頂部的元素是最小的,大頂堆是指頂部的元素師最大的。 這樣只要我們能夠得到這樣的堆,每次將頂部的元素和數列的最後一個

原创 堅持c++,真正掌握c++

我寫這樣的文章,當然是爲了自己日後方便自己查看,當作看書的筆記,也是爲了和廣大喜歡c++語言的同仁交流。幾天複習了c++primer的13章複製控制。從上一章中我們知道,如果我們不定義類的構造函數時,編譯器就會很友好的幫我們合成一個,那麼

原创 自己第一個控制檯的遊戲——貪吃蛇

一直想自己寫個遊戲玩玩,好像很厲害的樣子,終於今天下定決心寫了個最經典的休閒的小遊戲——貪吃蛇,當然也有借鑑別人的程序,但是整個代碼都是和別人不一樣的,直接上代碼吧: #include <conio.h> #include <iostre

原创 關於c++primer的一個代碼錯誤

最近看c++primer第四版的標準容器vector,講到對vector容器的插入刪除元素會使得end()的迭代器失效的問題,所以不建議程序員對end()的存儲。 vector<int> vec; vector<int>::iterato

原创 迴文距離求解

基於上面一篇博文的代碼設計求的某個數的迴文距離,所謂迴文距離就是給定一個數,求這個數離與他最近的那個迴文數的距離,例如123的迴文距離爲2,因爲離123最近的迴文數爲121,所以123的迴文距離爲2,代碼如下: #include <ios

原创 再談MFC學習——模態對話框的數據傳遞

學習c++的目的就是爲了使用封裝好的類,而最最經典的封裝類當然是微軟的MFC窗口程序類。學習MFC編程之前要學習c++的主要知識,掌握c++的基本編程思想。下面就看下我學習的MFC模態對話框的數據傳遞。 首先,什麼叫做模態對話框呢?模態對

原创 3n+1

對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。編寫程序要求:對給定的任一不超過1000的正整數n,簡單地數一下,需要多少步(砍幾下)才能得到n

原创 輸入任意兩個數,找到兩個數之間的迴文數

如題,編寫一個這樣的程序實現找出兩個數之間的迴文數,先介紹下什麼是迴文數,迴文數就是這個數正過來寫和反過來寫的數值是相等的,如12321,反過來寫還是12321. 先上代碼 #include <iostream> #include <s

原创 斐波那契數列新解

斐波那契數列大家都很熟悉了 f(n) = f(n-1) + f(n-2) f(0) = 1 f(1) = 1 如果要用計算機程序來實現這個功能的話,根據上面的遞推公式很容易想到使用遞歸的方式,使用遞推的優點是程序員不用考慮具體的計算過程,