begin process at 2012 05 28 07:11:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Maths

 > 

algorithmique de fonction rec


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

algorithmique de fonction rec

samedi 2 décembre 2006 à 21:18:29 | algorithmique de fonction rec

fs_fck_sarko

bonjour tout le monde,
est ce que quelquun pourai maider pour le calul de complexite d'un programme qui resout les sudoku ?

En fait je voudrais trouver un resultat generique( pour une grille n*n ).
merci bcp.

void vp(unsigned int lig, unsigned int col, unsigned int grille [9][9], bool t[9])
{
  for(unsigned int i=0;i<9;i++)
    {
      if(grille [lig][i]!=0) t[grille[lig][i]-1]=false;
      if(grille [i][col]!=0) t[grille[i][col]-1]=false;
    }

  unsigned int lg=0,cl=0;
  if(lig<3) lg=0;
  else if (lig<6) lg=3;
  else lg=6;

  if(col<3) cl=0;
  else if (col<6) cl=3;
  else cl=6;

  for(unsigned int i=lg;i<lg+3;i++)
    for(unsigned int j=cl;j<cl+3;j++)
    if (grille [i][j]!=0) t[grille[i][j]-1]=false;

}


void resoudre(unsigned int grille[9][9])
{
  bool ok=false;
  unsigned int i,j;
  for(i=0;i<9;i++)
  {
     for(j=0;j<9;j++)
       if(grille[i][j]==0) {ok=true;break;}
   if(ok) break;
  }
 
  if(!ok) afficher(grille);
  else
  {
      bool t[9];
      for(unsigned int a=0;a<9;a++) t[a]=true;
      vp(i,j,grille,t);
     
     
      for(unsigned int k=0;k<9;k++)
      {
           if(t[k])
           {
           unsigned int grille2[9][9];
           for(unsigned int ii=0;ii<9;ii++)
              for(unsigned int jj=0;jj<9;jj++)
                  grille2[ii][jj]=grille[ii][jj];
                 
           grille2[i][j]=k+1;
           resoudre(grille2);
           }
      }//fin parcours tableau valeurs
     
  }// fin else
                    

}

void afficher(unsigned int grille[9][9])
{
  cout<<endl<<endl;
  unsigned int a=0;
  for(unsigned int i=0;i<9;i++)
    {
      for(unsigned int j=0;j<9;j++)
    {   
      if (j==3 || j==6) cout<<" ";
      if (i==a) {cout<<endl;a+=3;}
      cout<<grille[i][j]<<" ";
    }
      cout<<endl;
    }
}



dimanche 3 décembre 2006 à 15:55:12 | Re : algorithmique de fonction rec

yann_lo_san

Juste une petite remarque, si tu avais plus de 2 boucles imbriquées, le if(ok) break; serait une redondance extrème.

bool ok=false;
for(i=0; i<9 && !ok; i++)
{
     for(j=0; j<9; j++)
          if(grille[i][j]==0) {ok=true; break;}
     // if(ok) break;
}



Cette discussion est classée dans : int, grille, for, unsigned, lig


Répondre à ce message

Sujets en rapport avec ce message

Segmentation Fault....en traitement d'image [ par psysta ] Bonjour,je suis nouveau dans la programmation en C. J'ai un programme Matlab qui marche bien, et je souhaiterais l'implémenter en C. Le pgm compile bi URGENT :voila la sulution du SUDOKU avec recursivité,mais y a qq chose qui manque [ par imad_lol ] merci de lire ma fonction de parcour (recursive).jai donné que des "0" a ma grille.donc y a au moin une solution.mon prg affiche les chiffe de "1" a " Aide partie résolution de mon sudoku... [ par Francks11 ] Bonsoir, enfaite il me faudrait de l'aide pour ma partie sol du sudoko qui recherche les solutions du jeu. A savoir, que pour chaque essai, on conser Besoin d'aide urgent SVP [ par paulina82 ] Bonjour, j'ai un gros probleme avec mon programme ecri en langage C.lorsque je complile il n'afiche pa d'erreur mais lorsque j'esaye de l'executé il Problème en tête bitmap [ par piroman14 ] Slt tt le monde!Je rencontre un petit problème dans mon algorithme. En effet, je n'arrive pas à coder l'en-tête d'une image bitmap correctement. J'obt remplir aléatoirement une matrice binaire dynamique [ par amani20081984 ] bonjour, je veux bien remplir une matrice de structure dynamique d'une manière aléatoire par des valeurs 0 et 1 en utilisant la fonction rand(),voicii passage en paramètre d'un tableau [ par misterbobo ] Bonjour, j'ai à programmer la fonction nouvelle génération d'un jeu de la vie dont les paramètres en entrés sont imposés. Je pense être arrivé à quelq problème d'intégrer mon algorithme [ par baster200x ] Slt tous le mande! je vous adresse pour m'aider à trouver une solution à mon problème! j'ai un outil Open source Nommé [url=http://home.dei.polimi c++ [ par yesoun1 ] je serai reconnaissant de votre aide ;) et merci d'avance[^^happy10] quel est le rôle de "*" ?? for(unsigned int i=0; i < hauteur; i++) { for j'ai besoin de vous!!! [ par baster200x ] bonjour les amis [^^happy13] j'ai trouvé la solution pour mes problème que je l'ai poser précédemment sur le forum à propos de l'intégration d'u


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales