C ++ - Blue Cup Bridge - взять подземный дворец сокровищ [2014 Zhenti] [поиск памяти]

Dp начал думать, что четырехмерное состояние имеет хорошую работу, а потом написать Вор тошноту

Затем измените поиск, четыре типа отрасли нужен хороший, но сложность не так ли?

После отказа, ищет решение проблемы, Lv, на самом деле два, поиска памяти.

Ну, на самом деле вы, Синий мост Cup, так как алгоритм насилия!

PS:

При поиске в состояние, возвращаемое значение может быть равно 0, поэтому массив присваивается начальное значение -1

1 #include <cstdio>
 2 #include <CString>
 3 #include <iostream>
 4 с  использованием  пространства имен STD;
5  Const  INT MOD = 1e9 + 7 ;
6  INT п, т, к;
7  INT v [ 55 ] [ 55 ];
8  INT F [ 55 ] [ 55 ] [ 15 ] [ 15 ];
9  INT ДФС ( INT х, INT у, INT NUM, INT макс) {
 10 ,      если(е [х] [у] [число] [ не более + 1 ] = - 1 ) возвращение Р [х] [у] [число] [ не более + 1 ];
11 ,      если (х == п == && у м) возвращение Р [х] [у] [число] [ не более + 1 ] = (число == к || (число == к- 1 && макс < v [х] [у] ));
12      INT ANS = 0 ;
13 ,      если (х + 1 <= п) {
 14 ,          если (макс <v [х] [у]) ANS = (ANS + ДФС (х + 1 , у, Num + 1 , v [х] [у]))% MOD;
15          ANS = (ANS + ДФС (х + 1 , у, Num, макс))% MOD;
16      }
17 ,      если (у + 1 <= м) {
 18 ,          если (макс <v [х] [у]) ANS = (ANS + ДФС (х, у + 1 , Num + 1 , v [х] [у]))% MOD;
19          ANS = (ANS + ДФС (х, у + 1 , Num, макс))% MOD;
20      }
 21      возврата Р [х] [у] [число] [ не более + 1 ] = анс;
22  }
 23  INT основных () {
 24      CIN >> п >> т >> к;
25      для ( Int I = 1 ; я <= п; я ++) , для ( INT J = 1; J <= т; J ++) CIN >> v [I] [J];
26      MemSet (е, - 1 , SizeOf (е)); ДФС ( 1 , 1 , 0 , - 1 );
27      соиЬ << F [ 1 ] [ 1 ] [ 0 ] [ 0 ] << епсИ;
28      возвращения  0 ;
29 }

 

рекомендация

отwww.cnblogs.com/JasonCow/p/12424173.html
рекомендация