Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CTRL - 2016/03/02 DP勉強会
Search
h1dia
March 02, 2016
Programming
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CTRL - 2016/03/02 DP勉強会
h1dia
March 02, 2016
More Decks by h1dia
See All by h1dia
アレ
h1dia
0
130
slide
h1dia
0
190
Other Decks in Programming
See All in Programming
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
ActionController meets Protocol Buffers
sorah
0
530
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
580
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Kotlinの15年とServer-Side Kotlin
n_takehata
1
150
AmebaブログはKMPから卒業します
kmars0605
0
190
Next.js: The final boss of Web Performance
guaca
0
260
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Color Theory Basics | Prateek | Gurzu
gurzu
1
490
Google's AI Overviews - The New Search
badams
0
1.6k
How GitHub (no longer) Works
holman
316
150k
Typedesign – Prime Four
hannesfritz
42
3.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
530
The Cult of Friendly URLs
andyhume
79
7k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
Transcript
みなさん
None
None
頭の体操
フィボナッチ数
フィボナッチ数 • f(n) = f(n-1) + f(n-2) • f(0) =
0 • f(1) = 1 • f(7) = ?
フィボナッチ数 • f(n) = f(n-1) + f(n-2) • f(0) =
0 • f(1) = 1 • f(7) = 13
フィボナッチ数列 • 実装してみよう • 入力 N に対して f(N) となるような出力を返すよ うなプログラム
一般項
実装 • 定義通りにやる – 再帰 • ループによる実装
テスト • ideone.com • N = 10000のとき、このプログラムは動作する?
CTRL春のDP祭り 2016/03/02 h1dia
None
None
DP?
DP(Dynamic Programing) • どうも動的計画法とかいうのが分かってないと 予選突破ができないっぽい • せめて本戦くらいには出たいよね – だって本戦行けばタダで音ゲーできるんだよ!!
None
None
計算量 • 再帰による実装はf(0) または f(1) になるまで収束しない • f(5)のとき 5
計算量 • 再帰による実装はf(0) または f(1) になるまで収束しない • f(5)のとき 5 4
3
計算量 • 再帰による実装はf(0) または f(1) になるまで収束しない • f(5)のとき 5 4
3 3 2 1 2
計算量 • 再帰による実装はf(0) または f(1) になるまで収束しない • f(5)のとき 5 4
3 3 2 1 2 2 1 0 1 1 0
計算量 • 再帰による実装はf(0) または f(1) になるまで収束しない • f(5)のとき 5 4
3 3 2 1 2 2 1 0 1 1 0 0 1
計算量 • 再帰による実装はf(0) または f(1) になるまで収束しない • f(5)のとき 5 4
3 3 2 1 2 2 1 0 1 1 0 0 1 O(2^n)
計算量 • 配列とループによる実装 • f(n-1) と f(n-2) を逐一計算する • f(5)のとき
計算量 • 配列とループによる実装 • f(n-1) と f(n-2) を逐一計算する • f(5)のとき
1
計算量 • 配列とループによる実装 • f(n-1) と f(n-2) を逐一計算する • f(5)のとき
1 1
計算量 • 配列とループによる実装 • f(n-1) と f(n-2) を逐一計算する • f(5)のとき
1 1 2
計算量 • 配列とループによる実装 • f(n-1) と f(n-2) を逐一計算する • f(5)のとき
1 1 2 3
計算量 • 配列とループによる実装 • f(n-1) と f(n-2) を逐一計算する • f(5)のとき
1 1 2 3 5 O(n)
ポイント • 計算結果を逐一メモしていくことで 計算量を減らす
リスの問題 • N (1≤N≤1000) 匹のリスが一列に並んでいる。左 から i 匹目のリスには、整数 a i
が書かれている。 この中から何匹かのリスにぶどうをのせ、ぶどう の乗ったリスにかかれた整数が左から昇順に並ん でいるようにしたい。最大何匹のリスにぶどうを 乗せられるか。
リスの問題 0 1 2 3 4 5 6 1 2
3 4 5 学生 リス • N (1≤N≤1000) 匹のリスが一列に並んでいる。
リスの問題 0 1 2 3 4 5 6 1 2
3 4 5 リス リス • リスにぶどうを乗せる • ぶどうを乗せたリスの高さが左から昇順に並んで いるようにしたい
リスの問題 0 1 2 3 4 5 6 1 2
3 4 5 リス リス • 最大何匹のリスにぶどうを乗せられる?
リスの問題 0 1 2 3 4 5 6 1 2
3 4 5 リス リス • 解
まともに解こうとする • N = 5 のとき、2 から 5 の範囲で全探索 –
5C2 + 5C3 + 5C4 + 5C5 = 10 + 10 + 5 + 1 – O(n^2) • もう少し計算量を減らしたい
よく考える 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • なんか増えた
よく考える 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • 3匹目に着目する
よく考える 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • 3匹目にぶどうが乗っているとき、1匹目には必ずぶどう が乗る
よく考える 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • 4匹目に着目する
よく考える 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • 4匹目にぶどうが乗っているとき、3匹目には必ずぶどう が乗る -> 1匹目にも乗っている
漸化式 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • リスの番号 n は、自分よりも高さの低い リスの番号 1 ~ n – 1までのぶどうの最大数 + 1 をとる 1 2 3 2
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 1 1
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 2 1 2
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 3 2 1 2
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 4 2 1 2 3
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 5 2 1 2 3 1
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 6 2 1 2 3 1 2
わかりづらいので 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • n = 7 2 1 2 3 1 2 4
もういちど 0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 リス リス • リスの番号 n は、自分よりも高さの低い リスの番号 1 ~ n – 1までのぶどうの最大数 + 1 をとる 1 2 3 2
実装してみよう • N n_1, n_2, n_3 … n_N の形で値が与えられます。 リスの数
N(3 ≦ N ≦ 1000) リスの高さ(整数) 乗せられるぶどうの最大数を出力してください。 例 7 3 6 4 5 1 2 7 出力 4
AOJ
フォーラムに2問 • Kannondou • The First Grade • 解いてみよう
観音堂
Kannondou • 階段は 1 ~ 30段 • 飛び方は3種類 – 1段進む
– 2段進む – 3段進む • 30段目に行くために、3種類の飛び方を組み合わせた 飛び方の数は…?
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目 1
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目 2
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目 4
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目
Kannondou 0段目 1段目 2段目 3段目 4段目 7
Kannondou • N 段目に到達できるのは、N-1 N-2 N-3段目のみ • N-1 N-2 N-3段目までの数の和
• N = N-1 + N-2 + N-3 – トリボナッチ数列
1ねんせい
A First Grader • 計算の組み合わせの数?
A First Grader • 計算の組み合わせの数? 4 3 7
A First Grader • 計算の組み合わせの数? 4 3 7 + -
A First Grader • 計算の組み合わせの数? – すべての計算式の数は2^n個 4 3 7
+ - + - + -
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 – DP[N][21] のような2次元配列を用意する
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 » (1 + 0)と(1 - 0)として考える 0 1 2 3 4 5 6 1
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 » (1 + 1) , (1 – 1) 0 1 2 3 4 5 6 1 1 1
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 • (2 + 1), (2 – 1), (0 + 1), (0 – 1) 0 1 2 3 4 5 6 1 1 1 2 1
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 0 1 2 3 4 5 6 1 1 1 2 2 3 1 1
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 0 1 2 3 4 5 6 1 1 1 2 2 3 5 1 1 4 1
A First Grader • 計算結果を保存していく! – Ex) 1 1 1
1 1 1 (配列のインデックスが解答になる) 0 1 2 3 4 5 6 1 1 1 2 2 3 5 1 1 4 1