Задача на динамическое программирование Ограничение по

advertisement
Задача на динамическое программирование
Язык
GN
Free
Pyth Mo
GN U
Delp Jav PH
Pasc
on
no
U C C+ hi
a
P
al
2.7
C#
+
Pyth
Hask
on
ell
3.1
Ограничение
1
по
времени,сек
Min
0.00 0.00 0.00 0.00
время,
1
1
1
2
сек
0.09 0.04
0.03
0.009
0.047 0.003
8
6
9
Ограничение
6
по
памяти,мегаб 4
айт
Средне
0.00 0.00 0.00
е
0.01
4
8
время, 7
сек
0.3
0.04
0.06
0.024
0.099 0.004
6
4
Верны
х
386
решени
й
36
1
23
757 300
6
19
58
2
В прямоугольной таблице NxM в начале игрок находится в левой верхней клетке. За один ход ему разрешается
перемещаться в соседнюю клетку либо вправо, либо вниз (влево и вверх перемещаться запрещено). Посчитайте, сколько
есть способов у игрока попасть в правую нижнюю клетку.
Входные данные
Вводятся два числа N и M - размеры таблицы (1<=N<=10, 1<=M<=10).
Выходные данные
Выведите искомое количество способов.
Примечание
При указанных ограничениях число способов входит в тип Longint.
Примеры
Входные данные
2 3
Выходные данные
3
Входные данные
3 3
Выходные данные
6
Если лабиринт такой, то ход 1
В какой бы я клетке не находилась, к нижней есть только 1 вариант
Допустим, появилась еще одна клетка, из нее 2 варианта( или вниз, или вправо, 2=1+1)
(3=2+1)
4=3+1
Задача сводится к заполнению матрицы суммами чисел
Aij=ai+1,j+ai,j+1
В a11 ответ
var a: array[1..10,1..10] of integer;
n,m,i,j:integer;
begin readln(n,m);
for i:=1 to n do for j:=1 to m do begin a[n,j]:=1; a[i,m]:=1; end;
for i:=n-1 downto 1 do
for j:=m-1 downto 1 do a[i,j]:=a[i,j+1]+a[i+1,j];
writeln(a[1,1]);
end.
Download