劉汝佳第六章UVA 548

2021-09-02 02:47:32 字數 1080 閱讀 3329

遞迴遍歷樹還是有點繞。現在看來是這樣

1.先序遍歷的結果,第乙個為節點,然後一坨是preorder(left[root])的結果,右邊是preorder(right[root])的結果

2.中序遍歷,同理,節點在中間。

3.後序遍歷,同理,節點在最後

在這道題中,因為要區分節點,所以每個節點權值不一樣,所以可以用節點的權值來唯一表徵節點。總的來說:

1.用陣列實現了樹,left[root]是root左邊的權值,right[root]是root右邊的權值。

2.build函式寫的很好,l1和r1代表了構建樹所需要的inorder的範圍,包括inorder(left[root]),root,inorder(right[root])。l2和r2代表了構建樹所需要的postorder的範圍。我們要做的事情,就是把利用postorder來把root找到,然後在inorder中分出左邊和右邊,在進行下一次構建。而這個遞迴的出口條件,就是範圍為0,即l1>r1. 因為build是返回所需構建範圍中的結點,所以當終值的時候,返回0,即0即為接地。這就要滿足不存在零權值的節點了。

3.更多的細節,比如讀入資料,邊界是多少,還需要更加熟悉。

下面上**,還需要更熟悉一下。

#include#include#include#includeusing namespace std;

const int maxn=10010;

int in_order[maxn],post_order[maxn],lef[maxn],righ[maxn];

int n;

bool read_list(int *a)

return true;

}int build(int l1,int r1,int l2,int r2)

int best,best_sum;

void dfs(int root,int sum)

}if(lef[root]) dfs(lef[root],sum);

if(righ[root]) dfs(righ[root],sum);

}int main(void)

return 0;

}

劉汝佳第六章UVA 1572

轉化為乙個有向圖,判斷有向圖是否有閉合環。如果有,則可以無限重複。如果沒有,則不行。轉化的具體方式為,遍歷輸入條件的每乙個邊,然後把這個邊的對應節點 比如a 對應a 與這個條件的其他邊相連 模擬現實情況中的兩個正方形相連 網上 的輸入非常漂亮,用了兩個函式,乙個id函式,將52個條件對應為了52個數...

劉汝佳第六章UVA 1599

這個題瘋狂re.網上找的 也不好使,不懂了。無向圖,資料量太大,開鄰接矩陣會tle。所以開鄰接向量 先一次bfs,將每乙個點的距離找出來。第二次bfs,將以每乙個點的距離為參照,先判斷是否是最短路徑 距離減1 然後再判斷顏色。然後再對這個點所有最短路徑且最小顏色的點bfs。注意還要把ans i 設定...

mysql第六章 第六章 mysql日誌

第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...