More Related Content
More from Kensuke Otsuki (13)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
- 2. 自己紹介 Part1: 本業編
• 数理工学系出身
– 最適化, アルゴリズム
– グラフネットワーク
• 今の仕事も数理工学系
– マッチングしたり
– チャットボット作ったり
– スケジューリングしたり
2
ニューヨークネットワーク
の耐故障性評価
/ 42
- 16. もし桁数が小さかったら…
16
a c
b
 ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄
for (int a = 1; a <= 9; ++a) {
for (int b = 0; b <= 9; ++b) {
for (int c = 1; c <= 9; ++c) {
int ue = a * 100 + 3 * 10 + b;
// 一段目
int seki1 = ue * 2;
if (seki1 < 1000) continue; // 4 桁でないとダメ
if (seki1 / 100 % 10 != 2) continue; // 100 の位が 2
// 二段目
int seki2 = ue * c;
if (seki2 >= 1000) continue; // 3 桁でないとダメ
if (seki2 % 10 != 1) continue; // 1 の位が 1
// 積
int shita = c * 10 + 2;
int seki = ue * shita;
if (seki >= 10000) continue; // 4 桁でないとダメ
// 条件を満たしたもの
cout << ue << " x " << shita << " = " << seki << endl;
}
}
}
三重の for 文
/ 42
- 41. 深さ優先探索 (DFS) の応用範囲
• 数独も解ける (蟻本参照!)
• フリーセルも解ける (頑張れば)
• ゲーム木探索 (将棋とか)
• メモしながら DFS すれば動的計画法 (DP) にも!
• makefile の仕組み (トポロジカルソート)
• ネットワークフローアルゴリズムのサブルーチン
– マッチングアルゴリズムなど
41 / 42