980 상이한 경로 III

kirin 980 还行

첫째, 5 % 자신의 시간을 쓰기, 5 % 공간, 쓰레기 코드

1  BOOL 확인 (벡터 <벡터 < INT >> 그리드 의 INT m, INT의 N)
 2  {
 3      부울 입술 = ;
4      에 대해 ( int로 난 = 0 ; i가 grid.size ()을 <; 내가 ++ )
 5      {
 6           ( INT의 J = 0 ; J <표 [ 0 ] 크기는 ()을, J ++ )
 7          {
 8              경우 (표 [I] [J] == 0 )
 (9)              {
 10                  입술 =거짓 ;
(11)                  휴식 ;
12              }
 13          }
 14      }
 15      리턴 입술;
16  }
 17  INT의 사용 (벡터 <벡터 < INT >> 그리드 의 INT m, INT의 N)
 18  {
 19      의 경우 (m <grid.size () && N <표 [ 0 ] 크기는 () && 격자 [m] N] == 2 )
 20          리턴  2 ;
(21)      그 밖의  경우 (m <grid.size () && N <표 [ 0 ] 크기는 () && (그리드 [m] [n]을 == 0그리드 || [m] [N] == 1 ))
 22      {
 23           1 ;
24      }
 25      다른 
26          리턴 - 1 ;
27  }
 28   백 (벡터 <벡터 < INT >> 및 그리드, INT 및 입술, INT의 m, INT의 N)
 29  {
 30      의 경우 (사용 (그리드, m, N) == 1 )
 31      {
 32          그리드 [m] [N] = - 1 ;
33          m ++ ;
(34)         백 (격자, 입술, m, N);
35          M-- ;
36          그리드 [m] [N] = 0 ;
37  
38          표 [m] [N] = - 1 ;
39          N ++ ;
(40)          위로 (격자, 입술, m, N);
41          N-- ;
42          그리드 [m] [N] = 0 ;
43  
44          표 [m] [N] = - 1 ;
45          M-- ;
(46)          위로 (격자, 입술, m, N);
(47)          m ++ ;
48          그리드 [m] [N] = 0;
49  
50          표 [m] [N] = - 1 ;
51          N-- ;
(52)          위로 (격자, 입술, m, N);
53          N ++ ;
54          그리드 [m] [N] = 0 ;
(55)      }
 (56)      그 밖의  경우 (사용 (그리드, m, N) == 2 && 확인 (격자, m, N))
 (57)          입술 ++ ;
58      다른 
59          ;
60  }
 61  INT uniquePathsIII (벡터 <벡터 < INT >> 및 그리드) {
 62      INT입술 = 0 ;
63      의 경우 (grid.size () == 0 )
 64          리턴  0 ;
65      INT의 m = 0 , N = 0 ;
(66)      에 대한이 ( int로 난 = 0 ; i가 grid.size ()을 <; 내가 ++ )
 67      {
 68           ( INT의 J = 0 ; J <표 [ 0 ] 크기는 ()를; J를 ++ )
 69          {
 70              의 경우 (표 [I] [J] == 1 )
 71              {
 72                 m = I;
(73)                  N = J;
74                  체류 ;
75              }
 76          }
 77      }
 78      백 (격자, 입술, m, N);
(79)      반송 입술;
80 }

둘째, 문제 해결 방법

해밀턴, 동적 프로그래밍

추천

출처www.cnblogs.com/zouma/p/11607222.html