POJ 3050 (Hopscotch)

lien Sujet: http: //poj.org/problem id = 3050?

 

Signification des questions: Q Combien d'espèces de six (reproductible) constituée d'une chaîne continue de matrice choisie 5 * 5

 

Pensée: Ceci est une échelle pas beaucoup d'un problème ou la recherche violente.

   La difficulté est de déterminer s'il y a double emploi, l'idée est de commencer après une chaîne à six chiffres excel réordonnancement pommes comparer des pommes, (en fait, vous pouvez le faire), mais cela augmenterait la taille du sujet, de sorte que l'utilisation de la STL de C récipient ensemble.

 

#include <iostream> 
#include <algorithme> 
#include <cstdio> 
#include < set >
 en utilisant l'  espace de noms std;
int s [ 6 ] [ 6 ];
int dx [ 4 ] = { 0 , 0 , 1 , - 1 }, dy [ 4 ] = { 1 , - 1 , 0 , 0 };
set < int > st; 

vides dfs ( int x, int y, intNUM, int Val) {
     IF (NUM == . 6 ) { 
        st.insert (Val);         // SET vraiment bien bon parce que double de désaccentuation numérique est aussi efficace 
        retour ; 
    } 

    pour ( int I = 0 ; I < . 4 ; I ++ ) {
         int NX = X + DX [I];
         int NY = Y + Dy [I];
         SI (NX> = 0 && NX < 5. = && NY> 0 && NY < 5. ) { 
            NUM ++ ; 
            DFS ( NX, NY, NUM, Val * 10 +S [NX] [NY]); 
            NUM -;     // ceci est une fosse, un début oublie toujours de restaurer, d'être donné Bangbang Bang 
        } 
    } 
} 

int main ( vide ) { 

    pour ( int I = 0 ; I < . 5 ; I ++ ) {
         pour ( int J = 0 ; j < . 5 ; J ++ ) { 
            Scanf ( " % D " , et S [i] [j]); 
        } 
        getchar (); 
    } 
    pour ( int I = 0 ; I < 5. ; I ++)
         Pour ( int j = 0 ; j < 5 ; j ++ ) 
            dfs (i, j, 1 , S [i] [j]); 

    // printf ( "% d \ n", st.size ()); 
    Cout << st.size () << endl; 

    retourner  0 ; 
}
Afficher le code

 

Je suppose que tu aimes

Origine www.cnblogs.com/jaszzz/p/12548655.html
conseillé
Classement