PAT甲級C 總結(二)

2021-09-24 06:23:09 字數 1128 閱讀 3217

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...