Time of Update: 2018-12-06
關於最長公用子序列,相信大家都不是很陌生了,在這裡我們分兩種情況討論,一是子序列是不連續的,二是子序列是連續的。題目:字串A=“abcbdab”,字串B=“bdcabc”,求A與B的最長公用子序列(1)子序列是不連續的 關於子序列是不連續的,最長用的方法是動態規劃,通式為: x[i][j]=x[i-1][j-1] if A[i]==B[j] x[i][j]=max{x[i-1][j],x[i][j-1]} if A[i]!=B[j]
Time of Update: 2018-12-06
1、Define用法: define主要是用於宏常量定義的,使程式看起來更簡潔明了,方便代碼維護,#define定義的實質只是一個常數的名字,沒有具體資料類型的,沒有分配記憶體空間。在編譯是會被編譯器替換為該常數。每次使用該宏定義,就要進行編譯並分配空間,若一個程式中多次使用define定義的資料,則就會有多份拷貝。這麼做是為了提高程式的可讀性,但安全性相對差點。2、const用法: const定義的全域資料變數,其基本作用和define相同,但又在define的基礎上增加了好多功能。con
Time of Update: 2018-12-06
#include <iostream>using namespace std;int nihe(double *x,double *y,int N){double a0=0;double a1=0;double sum_x_square=0;double sum_x=0;double sum_y=0;double sum_x_y=0;double x_sum_square=0;for (int i=0;i<N;i++) {
Time of Update: 2018-12-06
close all;clear all;clc;img=imread('1.jpg');imshow(img);[m n]=size(img);img_re=zeros(m,n);tmp=zeros(8,8);for i=1:8:mfor j=1:8:n tmp=mc(img(i:i+7,j:j+7)); img_re(i:i+7,j:j+7)=tmp;
Time of Update: 2018-12-06
Bloom Filter是1970年由Bloom提出的,最初廣泛用於拼字檢查和資料庫系統中。近年來,隨著電腦和互連網技術的發展,資料集的不斷擴張使得Bloom Filter獲得了新生,各種新的應用和變種不斷湧現。Bloom Filter是一個空間效率很高的隨機資料結構,它由一個位元組和一組hash映射函數組成。Bloom Filter可以用於檢索一個元素是否在一個集合中,它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率。因此Bloom
Time of Update: 2018-12-06
資料結構中為了儲存和尋找的方便,用各種樹結構來隱藏檔,本章就淺談一下各種樹的表示方法、特點及各自的用途,本章設計的樹結構包括:二叉尋找樹(二叉排序樹)、平衡二叉樹(AVL樹)、紅/黑樹狀結構、B-樹、B+樹、字典樹(trie樹)、尾碼樹、廣義尾碼樹。1、二叉尋找樹(二叉排序樹) (圖a)二叉尋找樹是一種動態尋找表(圖a),具有這些性質:
Time of Update: 2018-12-06
STL是C/C++開發中一個非常重要的模板,而其中定義的各種容器也是非常方便我們大家使用。下面,我們就淺談某些常用的容器。這裡我們不涉及容器的基本操作之類,只是要討論一下各個容器其各自的特點。STL中的常用容器包括:順序性容器(vector、deque、list)、關聯容器(map、set)、容器適配器(queue、stac)。1、順序性容器(1)vector vector是一種動態數組,在記憶體中具有連續的儲存空間,支援快速隨機訪問。由於具有連續的儲存空間,所以在插入和刪除操作方面,效率
Time of Update: 2018-12-06
cl;H=1; %索引pix中第一個元素,即高度W=2; %索引pix中第二個元素,即寬度jiaodu=45; %要旋轉的角度,旋轉方向為順時針img=imread('Corner.png'); %這裡v為原映像的高度,u為原映像的寬度imshow(img);
Time of Update: 2018-12-06
題目:給出n個互不相同的字元,
Time of Update: 2018-12-06
在程式運行過程中,結構體或類的位元組對齊可以使程式更方便、更快速的執行,除了編譯器本身的最佳化外,還可以在程式中手動對齊。在C/C++中,是通過引入#pragam pack(n)來實現的。 預設情況下,編譯器為每個結構體或類中的每個成員按其自然對界(natural alignment,自然對界是指按結構體或類的成員中size最大的成員對齊)條件分配空間。各個成員安裝它們被聲明的順序在記憶體中順序儲存,第一個成員的地址和整個結構或類的地址相同。 #pragma pack(n)的使用規則為:
Time of Update: 2018-12-06
大小端: 對於像C++中的char這樣的資料類型,它本身就是佔用一個位元組的大小,不會產生什麼問題。但是當數制類型為int,在32bit的系統中,它需要佔用4個位元組(32bit),這個時候就會產生這4個位元組在寄存器中的存放順序的問題。比如int maxHeight = 0x12345678,&maxHeight =
Time of Update: 2018-12-06
close all;clear all;clc;img=imread('rice.png');imshow(img);[m
Time of Update: 2018-12-06
轉載:http://blog.chinaunix.net/uid-21843387-id-105857.html答案:在內建資料類型的情況下,效率沒有區別;在自訂資料類型的情況下,++i效率更高!分析:(自訂資料類型的情況下)++i返回對象的引用;i++總是要建立一個臨時對象,在退出函數時還要銷毀它,而且返回臨時對象的值時還會調用其拷貝建構函式。(重載這兩個運算子如下) #include <iostream>using namespace std;class
Time of Update: 2018-12-06
函數指標和指標函數是C語言中的一個挺常見的問題,對於新手來說,若不加以區分,還真是個痛點。針對此問題,本章專門介紹了二者之間的區別,讓讀者對函數指標和指標函數有更深入的瞭解。 函數指標和指標函數都是概念簡稱,指標函數是指傳回值是指標的函數,即本質是一個函數。而函數指標是指向函數的指標變數,即本質是一個指標變數。(1)指標函數 函數指標是指傳回值是指標的函數,其本質是一個函數。函數都是傳回型別,只不過指標函數傳回型別是某一類型的指標。其定義格式為: 傳回型別 * 函數名(參數列表)
Time of Update: 2018-12-06
1. 給定a、b兩個檔案,各存放50億個url,每個url各佔64位元組,記憶體限制是4G,讓你找出a、b檔案共同的url?方案1:可以估計每個檔案安的大小為50G×64=320G,遠遠大於記憶體限制的4G。所以不可能將其完全載入到記憶體中處理。考慮採取分而治之的方法。s 遍曆檔案a,對每個url求取,然後根據所取得的值將url分別儲存到1000個小檔案(記為)中。這樣每個小檔案的大約為300M。s
Time of Update: 2018-12-06
(1)字典樹(Trie樹) Trie是個簡單但實用的資料結構,通常用於實現字典查詢。我們做即時響應使用者輸入的AJAX搜尋方塊時,就是Trie開始。本質上,Trie是一顆儲存多個字串的樹。相鄰節點間的邊代表一個字元,這樣樹的每條分支代表一則子串,而樹的分葉節點則代表完整的字串。和普通樹不同的地方是,相同的字串首碼共用同一條分支。還是例子最清楚。給出一組單詞,inn, int, at, age, adv, ant, 我們可以得到下面的Trie:可以看出:每條邊對應一個字母。每個節點對應一項首碼。
Time of Update: 2018-12-06
雜湊,通過雜湊函數將關鍵字與儲存位置建立一個對應關係,這樣在尋找關鍵字的過程中就沒比較進行一個一個比較,而直接定位關鍵字所在的位置,是一種以空間換取時間的方式。由於所映射的地址空間有限及雜湊函數的設定,就是產生衝突,需要建立處理衝突的方法。在一般情況下,衝突只能儘可能的減少,而不能完全避免。那麼什麼是一個好的雜湊呢?通俗點說,好的雜湊也許就是能使關鍵字地址分布均勻,衝突少。下面我們具體一下好的雜湊的幾個特點: 雜湊演算法應滿足的特性:(1)平衡性(Balance) 平衡性是指將關鍵字的雜
Time of Update: 2018-12-06
轉載:http://blog.csdn.net/liukehua123/article/details/5482854 判斷一個數字是否為素數,正如大家都知道的那樣,一個數 n 如果是合數,那麼它的所有的因子不超過sqrt(n)--n的開方,那麼我們可以用這個性質用最直觀的方法來求出小於等於n的所有的素數。 num = 0; for(i=2; i<=n; i++) { for(j=2; j<=sqrt(i); j++) if( j%i==0
Time of Update: 2018-12-06
在C及C++語言中允許用一個標識符來表示一個字串,稱為宏,該字串可以是常數、運算式、格式串等。在編譯預先處理時,對程式中所有出現的“宏名”,都用宏定義中的字串去代換,這稱為“宏代換”或“宏展開”。宏定義是由來源程式中的宏定義命令完成的。宏代換是由預先處理程式自動完成的。若字串是運算式,我們稱之為函數式宏定義,那函數式宏定義與普通函數有什麼區別呢?我們以下面兩行代碼為例,展開描述: 函數式宏定義:#define MAX(a,b) ((a)>(b)?(a):(b)) 普通函數
Time of Update: 2018-12-06
轉載:http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html成員函數的重載、覆蓋(override)與隱藏很容易混淆,C++程式員必須要搞清楚概念,否則錯誤將防不勝防。1 重載與覆蓋成員函數被重載的特徵:(1)相同的範圍(在同一個類中);(2)函數名字相同;(3)參數不同;(4)virtual 關鍵字可有可無。覆蓋是指衍生類別函數覆蓋基類函數,特徵是:(1)不同的範圍(分別位於衍生類別與基類);(2)函數名字相同;(3)參數相同;(