一些小的編程技巧
阿新 • • 發佈:2017-07-02
自動 push 大數組 不足 alloc clas -s 編程 scanf
1.while
while(scanf("%d",&a)!=EOF)
不斷輸入測試數據,知道遇見結束符 類似的還有 while(gets(str)) 等
2. scanf的妙用
scanf("%4d%2d%2d",&y,&m,&d);
輸入年月日 自動復制 如19970103
3. 全局變量
如果需要開辟大量的內存空間,必需定義為全局變量,或者使用malloc動態申請變量空間。
比如說需要定義一個大數組,如果直接在main中定義,那麽函數所使用的棧空間將不足以提供如此龐大的內存,出現棧溢出,導致程序異常終止。
4. Hash
盡量使用hash表,hash數組,把程序中多次要用到的數據,先計算一遍 再記錄起來,下次再用的時候只需要查表就可以了。
5. 優先隊列實現小頂堆or大頂堆
優先隊列實現大頂堆 :
priority_queue<int> Q
小頂堆:
priority_queue<int,vector<int>,greater<int> > Q
對堆的有關操作:
Q.push(x);//將元素x放入堆Q中 int a=Q.top();//將堆頂元素的值賦值給a,但是並不彈出堆頂元素 Q.pop();//彈出堆頂元素,取出後堆會自動調整為一個新的小頂堆or大頂堆
一些小的編程技巧