1.stl 中的find(begin,end,val)方法用於查詢某物件,begin和end為查詢的首尾位址,區間是左閉右開,val為查詢的值,如果找到將返回指定的位址,如果沒找到,將返回引數end
2.dfs演算法中,如果對於圖的路徑陣列maps[n][n]出現了記憶體受限,可以使用vectormaps[n]來替代
3.deque插入元素:push_back(),push_front()分別是從後插入元素和從前插入元素
刪除元素:pop_back(),pop_front()分別是從後面刪除元素和從前刪除元素
4.用scanf為string賦值的方法:先用scanf用char陣列賦值,再用char陣列為string型別賦值
char n[100];
scanf("%s",n);
string s=string(n);
5.dfs通常的vis陣列的寫法用於無向圖,對於有向圖的深度優先遍歷這裡提供乙個思路,設定乙個map>
的容器,type型別表示每個結點,把每個路徑都設定給對應的容器[type],這樣在寫dfs的時候對這個容器遍歷即可,下面案例只有關鍵部分的**
map> relates;
void dfs(string a)
for(unsigned int i=0;i>a>>b>>time;
relates[a].push_back(b);
}return 0;
}
6.對樹的序列遍歷無非是想辦法找到乙個任意根結點的左右子樹的根,然後按照指定的序列進行遞迴,下面是乙個先序遍歷的例子(取自柳神**):
void getpost(int root, int tail) else
if(i - j != 1) return ;
getpost(root + 1, j);
getpost(i, tail);
post.push_back(pre[root]);
}
7.****現兩層遍歷往往可能會超時,這時如果想不到別的方法怎麼辦,嘗試用二分法遍歷來代替第二層遍歷吧
8.寫鍊錶題一定要注意資料裡可能會有不在鍊錶中的多餘結點,在進行操作前需要先進行排序
PAT甲級 二分
思路 1 n1 確定進製的數,n2 未確定進製的數 方便後面進行統一計算 2 n1轉換成10進製數,二分n2進製,將n2轉換成十進位制與n1進行比較,大了就把進製往小的方向調整,小了的話往大的調 如果相等,則找到進製,輸出 tips 本題的變數盡量都使用long long型 坑 進製radix的範圍...
PAT 甲級並查集總結
並查集 disjoint set 是一種可以動態維護若干個不重疊的集合,並支援合併與查詢兩種操作的一種資料結構。init 初始化 union int x,int y 合併兩個元素 findfather int x v找元素的所屬集合 我們建立乙個陣列father表示乙個並查集,father i 表示...
PAT甲級1001 c語言)
由輸入決定本題輸出和最高為7位 採用 03d不足3位左補0輸出。includeint main if sum 1000 sum 1000000 if sum 1000 if sum 1000000 return 0 採用將整數轉換為字串處理,用到string.h標頭檔案中的strlen 與sprin...