修行をしますこの広告は、90日以上更新していないブログに表示しています。Judge解法とりあえず、問題を統一的に解くために、入力を若干いじります。下のような入力a.##A##bBに対して、行を2つ追加して.##a.##A##bB##.とします。上に".###############"みたいなやつを追加して、一番下に"############."みたいなやつを追加しています。すると、必ず左上と右下が'.'になります。上記の例でもう少し考察をします。真ん中らへんにある'a'->'A'となるパスを作れそうなところを抜き出します。a.#Aそして、左上と右下を'.'に置き換えます。..#.これもまた、この問題の入力の一つとしてありえます。このように、左上と右下が'.'のグリッドグラフ上をstackを持ちながら移動する問題だととらえると、再帰的に同じ問題が現れます。これはメモ化再帰チャンスですね。左上と右下のペアの数は、26*10*10くらいです。ある左上と右下のペアについてこの問題を解いているとき、その内部にある別のペアたちを組み合わせて実際のパスを作っていくことになります。これをいい感じにやるために、内部でdpをします。「グリッドグラフ上で左または下にのみ動ける問題」でよく見られる二次元dpをやります(左または下に配る)。再帰的な問題が現れたときのみ、遠くにも配る感じです。うまく説明できないのでこれで終わりにします。コードの方もごちゃごちゃしていて汚いので(特にpairの中にpairを入れていてfirstとsecondが乱発されているあたり)、あてにしないほうがいいと思います。考察しているときもすごく楽しくて、とても良問だなあと思いました。1/2www.hackerrank.com出ました。Judgeはてなブログをはじめよう!latte0119さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。