靜態分布記憶體儲存trie樹

2021-06-18 00:07:13 字數 1100 閱讀 4216

以poj3630,hdu1671為例,

若用動態分布記憶體,在hdu就能過,time為312ms,memory為3712k

但在poj為tle

若用靜態分布記憶體,在poj 上的time為141ms,memory為2876k

在hdu上time為62ms,memory為2720k

靜態記憶體**如下:

/****

poj 3630 memory:2876k time:141ms codelength:786b

這道題使用malloc執行時間長,因此不動態分布記憶體(指標),採用靜態分布記憶體(陣列)。

***/

#includestruct node

}tree[100010];

int flag,p;

void creat(char *s)

} else // 節點不存在,新開闢乙個節點

}tree[index].cov=1; //字串結尾標記

}int main()

if(flag==0)

printf("yes\n");

else

printf("no\n");

} return 0;

}

動態記憶體**如下:

#include#include#includetypedef struct node

*trie;

int flag;

trie tree;

void creat(char *a)

if(current->next[a[i]-'0']!=0)

}else

}current->cover=-1;

}void del (trie node) //謹記 ! ! 釋放記憶體

free(node);

}int main()

int t=m;

for(i=1;i

Trie 樹記憶體消耗問題

大家都知道,trie樹 又稱字典樹 是一種樹型資料結構,用於儲存大量的字串。它的優點是 利用字串的公共字首來節約儲存空間。相對來說,trie樹是一種比較簡單的資料結構,比較易於理解。話說上帝是公平的,簡單的東西是要付出相應的代價的!trie樹也有它的缺點,它的記憶體消耗非常大。下面介紹乙個減小記憶體...

字串儲存結構Trie樹

trie樹主要用於字串的儲存,統計,查詢。其中字串的確定是根據節點在樹中的位置所決定的,並不是將字串的整個資訊存在節點中。如下圖所示 藍色節點表示為單詞字串的結尾,圖中包含了 ab,ac,b,bcd,cf 1 節點的結構體 const int char num 26 a z struct trien...

堆記憶體 棧記憶體 靜態儲存區

參考部落格 一般說到記憶體,指的是計算機的隨機儲存器ram,程式都是在這裡面執行。1.棧記憶體 棧記憶體由作業系統自動分配和釋放,速度快,使用方便,但程式設計師無法控制。若分配失敗,則提示棧溢位錯誤。注意,const區域性變數也儲存在棧中,向著記憶體位址減小的方向增長。棧記憶體儲存的是程式執行過程中...