読者です 読者をやめる 読者になる 読者になる

初代Masteries

きっとモヒカンにもなれないお前たちに告げる!!!

Project Euler - Problem 15

Problem 15

20 x 20のマス目の左上から右上までを, 引き返しなしで行くルートは何通り存在するか, という問題.

use strict;
use warnings;
use Memoize;
memoize('check_route');

my @route;
print check_route(20, 20) . "\n";

sub check_route {
    my ($x, $y) = @_;

    return 1 if $x == 0 || $y == 0;

    $route[$x][$y] = check_route($x-1, $y) + check_route($x, $y-1);
    $route[$y][$x] = $route[$x][$y];

    return $route[$x][$y];
}

再帰を使ってゴソっと計算.