1
//
HLOJ 1043 Accepted 93 196 689 C++
2
3 #include < iostream >
4 using namespace std ;
5
6 int inn ;
7 int flag[ 20 ][ 20 ] ;
8 int ans = 0 ;
9 int visit[ 20 ] ;
10
11 void DFS( int line, int total )
12 {
13 if ( line > inn ) { ans = ans > total ? ans : total ; }
14
15 for ( int row = 1 ; row <= inn; row ++ )
16 {
17 if ( visit[row] ) continue ;
18
19 visit[row] = 1 ;
20 DFS( line + 1 , total + flag[line][row] ) ;
21 visit[row] = 0 ;
22 }
23 }
24
25 int main()
26 {
27 while ( cin >> inn )
28 {
29 memset( flag, 0 , sizeof (flag) ) ;
30
31 for ( int i = 1 ; i <= inn; i ++ )
32 {
33 for ( int j = 1 ; j <= inn; j ++ )
34 {
35 cin >> flag[i][j] ;
36 }
37 } // input
38
39 ans = 0 ;
40 memset( visit, 0 , sizeof ( visit ) ) ;
41 DFS( 1 , 0 ) ;
42
43 printf( " %d\n " , ans ) ;
44 }
45 return 0 ;
46 }
2
3 #include < iostream >
4 using namespace std ;
5
6 int inn ;
7 int flag[ 20 ][ 20 ] ;
8 int ans = 0 ;
9 int visit[ 20 ] ;
10
11 void DFS( int line, int total )
12 {
13 if ( line > inn ) { ans = ans > total ? ans : total ; }
14
15 for ( int row = 1 ; row <= inn; row ++ )
16 {
17 if ( visit[row] ) continue ;
18
19 visit[row] = 1 ;
20 DFS( line + 1 , total + flag[line][row] ) ;
21 visit[row] = 0 ;
22 }
23 }
24
25 int main()
26 {
27 while ( cin >> inn )
28 {
29 memset( flag, 0 , sizeof (flag) ) ;
30
31 for ( int i = 1 ; i <= inn; i ++ )
32 {
33 for ( int j = 1 ; j <= inn; j ++ )
34 {
35 cin >> flag[i][j] ;
36 }
37 } // input
38
39 ans = 0 ;
40 memset( visit, 0 , sizeof ( visit ) ) ;
41 DFS( 1 , 0 ) ;
42
43 printf( " %d\n " , ans ) ;
44 }
45 return 0 ;
46 }