HLOJ_1043

 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  }

你可能感兴趣的:(HLOJ_1043)