以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區域性變數也儲存在棧中,向著記憶體位址減小的方向增長。棧記憶體儲存的是程式執行過程中...