元のブログへのリンク:MOOC 浙大データ構造の課後問題記録 - PTA データ構造問題集(全)
このブログは、データ構造の学習中に行った問題集を記録するためのものです。コードに誤りがある場合は、ご指摘ください!
また、データ構造のまとめとも言えます〜
ps:すでに c++ を学んでいるため、すべて c++ で書いていますが、c 言語の要素も多く含まれています。
MOOC リンク
第一週 - 最大部分列和アルゴリズム、二分探索#
コードとアイデアの詳細は、ブログを参照してください:PTA データ構造問題集 第一週 - 最大部分列和アルゴリズム、二分探索
01 - 複雑度 1 最大部分列和問題(20 分)#
01 - 複雑度 2 Maximum Subsequence Sum(25 分)#
01 - 複雑度 3 二分探索(20 分)#
第二週 - 線形構造#
学習ノートは、以下のブログを参照してください:線形リスト、スタック
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第二週 - 線形構造
02 - 線形構造 1 2 つのソート済みリンクリストのマージ(15 分)#
02 - 線形構造 2 一元多項式の乗算と加算演算(20 分)#
02 - 線形構造 3 リンクリストの逆転(25 分)#
02 - 線形構造 4 Pop Sequence(25 分)#
第三週 - 木(二分木など)#
学習ノートは、以下のブログを参照してください:二分木、キュー
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第三週 - 木(二分木など)
03 - 木 1 木の同型(25 分)#
03 - 木 2 List Leaves(25 分)#
03 - 木 3 Tree Traversals Again(25 分)#
第四週 - 二分探索木と平衡二分木#
学習ノートは、以下のブログを参照してください:二分探索木と平衡二分木
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第四週 - 二分探索木と平衡二分木
04 - 木 4 同じ二分探索木かどうか(25 分)#
04 - 木 5 Root of AVL Tree(25 分)#
04 - 木 6 Complete Binary Search Tree(30 分)#
04 - 木 7 二分探索木の操作セット(30 分)#
第五週 - ヒープ、ハフマン木、Union-Find#
学習ノートは、以下のブログを参照してください:ヒープ、ハフマン木、Union-Find
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第五週 - ヒープ、ハフマン木、Union-Find
05 - 木 7 ヒープ内のパス(25 分)#
05 - 木 8 File Transfer(25 分)#
05 - 木 9 Huffman Codes(30 分)#
第六週 - グラフ(上)#
学習ノートは、以下のブログを参照してください:グラフ
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第六週 - グラフ(上)
関連する知識には、グラフの基本的な表現とトラバーサル方法(BFS、DFS)が含まれます。
06 - グラフ 1 連結セットのリスト(25 分)#
06 - グラフ 2 Saving James Bond - Easy Version(25 分)#
06 - グラフ 3 六度の空間(30 分)#
第七週 - グラフ(中)#
学習ノートは、以下のブログを参照してください:グラフ理論
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第七週 - グラフ(中)
関連する知識には、単一始点最短経路アルゴリズム(Floyed アルゴリズム、Dijkstra アルゴリズム)が含まれます。
07 - グラフ 4 ハリー・ポッターの試験(25 分)#
07 - グラフ 5 Saving James Bond - Hard Version(30 分)#
07 - グラフ 6 旅行計画(25 分)#
第八週 - グラフ(下)#
学習ノートは、以下のブログを参照してください:最小全域木問題の解決(Kruskal アルゴリズム&Prim アルゴリズム)、データ構造学習ノート<8> ソート
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第八週 - グラフ(下)
関連する知識には、最小全域木、トポロジカルソートによるクリティカルパスの解決などが含まれます。
08 - グラフ 7 道路村村通し(30 分)#
08 - グラフ 8 How Long Does It Take(25 分)#
08 - グラフ 9 クリティカルアクティビティ(30 分)#
第九週 - ソート(上)#
学習ノートは、以下のブログを参照してください:データ構造学習ノート<8> ソート、マージソートの反復実装(保存用)
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第九週 - ソート(上)
各種のソートアルゴリズム(挿入ソート、マージソート、ヒープソートなど)が含まれます。
09 - ソート 1 ソート(25 分)#
09 - ソート 2 挿入またはマージ(25 分)#
09 - ソート 3 挿入またはヒープソート(25 分)#
第十週 - ソート(下)#
学習ノートは、以下のブログを参照してください:データ構造学習ノート<8> ソート
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第十週 - ソート(下)
各種のソートアルゴリズムの応用、構造体のソート、リストソートのループ判定などが含まれます。
10 - ソート 4 年齢の統計(20 分)#
10 - ソート 5 PAT Judge(25 分)#
10 - ソート 6 Swap (0, i) でソート(25 分)#
第十一週 - ハッシュ探索#
学習ノートは、以下のブログを参照してください:データ構造学習ノート<9> ハッシュ探索
課後の演習問題のコードとアイデアの詳細は、以下のブログを参照してください:PTA データ構造問題集 第十一週 - ハッシュ探索
ハッシュ探索の応用、KMP などが含まれます。
11 - ハッシュ 1 電話チャットマニア(25 分)#
11 - ハッシュ 2 ハッシング(25 分)#
11 - ハッシュ 3 QQ アカウントの申請とログイン(25 分)#
Kmp 串のパターンマッチング(25 分)#
まとめ#
これらの問題を解く際に、いくつかは MOOC で学んだデータ構造の定義を使用し、いくつかは STL を使用して省略しました。便利なものを使わないと本当に悲しいです(例:優先度キューは小さい頂点ヒープ、大きい頂点ヒープ、マップはハッシュ探索など、STL のものは非常に便利です)。
どのようにしても、最後の瞬間まで頑張ってやり遂げました。この超〜長い夏休みは無駄になりませんでした、冬休みも頑張って Java を学びます〜完結しました【bushi】