Time of Update: 2018-12-04
#include <iostream.h>#include <limits.h> //包含INT_MAX,INT_MIN的標頭檔 int nMax = INT_MIN; //將INT_MIN設為當前最大值的初始值int nMin = INT_MAX;/////記錄比較最大值函數void Max(int& nNum){ nMax = nNum > nMax ? nNum : nMax ;}/////記錄比較最小值函數void Min(int&
Time of Update: 2018-12-04
斐波那契數列可以派生出很多應用,其中,我們知道它的時間複雜性是指數級的,現在就來粗略地證明一下:斐波那契數列遞推式:F(n)=F(n-1)+F(n-2)F(1)=F(2)=1粗略證明可以利用Decision_Tree,為了更直觀,我引用另一個恒等函數 f(x)=0 ;x=1,2,3,4,5,............所以斐波那契數列遞推式變形如下:F(n)=F(n-1)+F(n-2)+f(n)F(1)=F(2)=1畫出Decision_Tree//F(n)= f(n)// / \//f(
Time of Update: 2018-12-04
DescriptionSquares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series' (where he had to use his toilet paper to draw on, for all of his paper was filled with squares and
Time of Update: 2018-12-04
題目:這道題目是一道面試題,先序遍曆和中序遍曆以數組的形式給出,要求我們根據這兩個條件重構出二叉樹。是一棵二叉樹// 6// / \// 5 7 // / \ \// 2 4
Time of Update: 2018-12-04
質數又稱素數。指在一個大於1的自然數中,除了1和此整數自身外,沒法被其他自然數整除的數。一、判斷一個數是否為質數首先根據定義,最簡單的判斷一個數n是否為質數的方法,就是從2開始對小於n的所有數,依次判斷是否能整除n,若都不能整除就是質數。bool IsPrime(int n){if(n == 1)return false;for(int i = 2; i < n; i++)if(n % i ==0)return false;return true;}我們再稍微改進一下,我們可以先判斷一下2
Time of Update: 2018-12-04
問題描述:程式的輸入包含兩個整數m和n,其中m<n。輸出是0~n-1範圍內m個隨機整數的有序列表,不允許重複。從機率的角度來說,我們希望得到沒有重複的選擇,其中每個選擇出現的機率相等。void GenerateKnuth(int m,int n){int t=m;for(int
Time of Update: 2018-12-04
1.下載 ubuntu 鏡像檔案。我下載的檔案全名是 ubuntu-12.04-desktop-i386.iso2.下載 EasyBCD。這個是用來引導安裝 ubuntu 的。 步驟1:在 win7 系統下,右鍵“我的電腦”->管理->磁碟管理,選擇F盤,壓縮卷,選擇13G即可。這樣就可以為ubuntu的安裝騰出13G的空間。步驟2:然後,開啟 EasyBCD,點擊"Add New Entry"—>"Neo Grub"—>"Install",再點"Configure"。
Time of Update: 2018-12-04
Trie樹實現代碼:// Max branch number. Such as 26 for lower case letter set, 10 for digit character set.const int MAX_BRANCH_NUM = 26;// Node of Trie Tree class CTrieNode{public:CTrieNode(){nPrefixCount = 0;nWordCount = 0;memset(next, NULL,
Time of Update: 2018-12-04
DescriptionGiven a sequence of positive integers, count all contiguous subsequences (sometimes called substrings, in contrast to subsequences, which may leave out elements) the sum of which is divisible by a given number. These subsequences may
Time of Update: 2018-12-04
本文參考:http://zhedahht.blog.163.com/blog/static/254111742010819104710337/題目:有一個複雜鏈表,其結點除了有一個m_pNext指標指向下一個結點外,還有一個m_pSibling指向鏈表中的任一結點或者NULL。其結點的C++定義如下:struct ComplexNode{ int m_nValue; ComplexNode* m_pNext; ComplexNode*
Time of Update: 2018-12-04
在C/C++的學習中,有人經常搞不清楚“常量指標”和“指標常量”這兩個概念。其實簡單一點講,“常量指標”所指向的地址上的資料是常量,而“指標常量”所指向的地址是常量,地址上面的資料是可以變化的。 首先,告訴大家一個小規則,就是像這樣連著的兩個詞,前面的一個通常是修飾部分,中心詞是後面一個詞,怎麼說呢,就像這裡的常量指標和指標常量。 常量指標,表述為“是常量的指標”,它首先應該是一個指標。常量指標,就是指向常量的指標,關鍵字 const 出現在 * 左邊,表示指標所指向的地址的內容是不可修改
Time of Update: 2018-12-04
廢話少說,直接上例子。例如要算14+8的和,平常的思維方式,4+8得2進1,1+1得2不進位,結果就是22.思維方式就是自右往左,邊加邊求和,再進位,再重複以上步驟。但是,現在限制住了加減乘除,剩下的只有與或非了。於是加可用異或,求進位可用與,重複上述步驟直到結果正確即可。改進一下,我們可分為三步走:1,整體求和(異或)2,整體求進位(與)3,重複以上步驟(迴圈或遞迴)C++代碼如下:int add(int num1,int num2){while(num2){int sum=num1 ^
Time of Update: 2018-12-04
1.對數的性質(1) alogab=b(2) logaa=1(3) loga(M*N)=logaM+logaN(4) loga(M÷N)=logaM-logaN(5) loga(Mn)=nlogaM(6) logaM1/n=logaM/n(7) logab*logba=12. 相關題目(1) 求 N ! (1 <= N <= 5000)中有多少位元字。若直接求 N !
Time of Update: 2018-12-04
題目:一個整型數組裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是O(n),空間複雜度是O(1)。思路:題目要求時間複雜度是O(n),空間複雜度是O(1),這說明基於比較的辦法求解無法完成,這題需要異或的性質,異或(同為0,異為1,相當於不進位加法)因為其它數都出現兩次,當掃描完一次之後,將所有的數做異或,那些相同的數都會變成0,結果是兩個不同的數的異或。例如,9,4,4,2做異或,4,4異或為0,結果就相當於9異或2。這裡有兩個數字不同,假設只有
Time of Update: 2018-12-04
使用單件模式的意圖是保證一個類只有一個執行個體,並提供一個訪問它的全域訪問點。將單件定義為全域或靜態對象,然後依賴於自動的初始化,並不能完全實現上述意圖。雖然可以提供全域訪問點,但這是不夠的。原因如下:1)我們不能保證靜態對象只有一個執行個體會被聲明。2)我們可能沒有足夠資訊在靜態初始化時執行個體化每個單件,單件可能需要在程式運行中稍後被計算出來的值。3)c++沒有定義轉換單元上全域對象的構造器的調用順序。這意味著單件之間不存在依賴關係;如果有,那麼錯誤將是不可避免的。4)使用全域或靜態對象的實
Time of Update: 2018-12-04
題目:把n個骰子扔在地上,所有骰子朝上一面的點數之和為S。輸入n,列印出S的所有可能的值出現的機率。用PN,S來表示N個骰子,頂面數字之和為S出現的機率,則:PN,S=aN,S/6^N其中aN,S為N個骰子頂面數之和為S的狀態的數量,6^N為總的狀態數量,因為每個骰子有6種狀態,N個骰子組成的狀態數就是6^N。下面給出求ai,j的遞推公式,即求i(1=<i<=N)個骰子頂面數之和為j(i=<j<=6*i)時的狀態數量:ai,j= ai-1,j-1
Time of Update: 2018-12-04
部分引用部落格:http://blog.csdn.net/mishifangxiangdefeng/article/details/7903794部分為個人觀點。寫在前邊:本來知道debug很強大,今天晚上才發現,debug原來可以發現這麼多疏漏的地方,用好debug確實可以事半功倍。參考答案:a)需要改變的結點包括“從根結點開始,到要插入到刪除的結點”的這條路徑上的所有結點。b)首先毫無疑問,需要在persistent_tree_insert函數內建立立一棵新樹,管理三個指標y(跟蹤父結點),
Time of Update: 2018-12-04
LL(1)定義:一個文法G是LL(1)的,若且唯若對於G的每一個非終結符A的任何兩個不同產生式
Time of Update: 2018-12-04
整理二叉樹的一些常見的問題#include <stack>#include <iostream>using namespace std;struct node//結點{int key;node* p;node* left;node* right;node(){}node(int k):key(k),p(NULL),left(NULL),right(NULL){}};struct TREE//樹{node* root;TREE():root(NULL){}};void
Time of Update: 2018-12-04
題目:輸入一棵二元尋找樹,將該二元尋找樹轉換成一個排序的雙向鏈表。要求不能建立任何新的結點,只調整指標的指向比如二叉搜尋樹:輸出應為: 3, 4, 5, 10, 11, 12, 13:分析:處理樹狀結構很容易想到遞迴,而二叉搜尋樹其實恰好是已經排序好的一個結構,而要把它變成連結,只需“中序遍曆”即可: 3,4,5,10,11,12,13,中序遍曆每訪問到一個節點的時候,需要將它的left指向指向它的前驅,它的區驅的right指標指向該節點。在中序遍曆的中間需要設定一個臨時前驅結點變數prior,