Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Problema generare cicluri  (Citit de 1962 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
Boot.cfg
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Februarie 17, 2011, 09:39:47 »

salut!am si eu o problema...nu stiu cum sa verific daca o muchie apare de 2 ori...
problema era "sa se genereze toate ciclurile ale unui graf neorientat care se da prin matricea de adiacenta"

Cod:
#include<iostream.h>
#include<fstream.h>
int a[20][20],s[20],i,j,m,n,x,y,z,p,t,t1,k;
fstream f("date.in",ios::in);
void init(int k){s[k]=0;}
int succesor(int k){
if(s[k]<n){s[k]++;
return 1;}
else return 0;}
int valid(int k){
if(k>1)
if(a[s[k-1]][s[k]]==0) return 0;
                                         //nu stiu cum sa verific daca o muchie apare de 2 ori...
return 1;}
int solutie(int k){
if(s[k]==x) return 1;
else return 0;}
void tipar(){t=1;
for(i=1;i<=k;i++) cout<<s[i]<<" ";
cout<<endl;}
void back(){
k=2;init(k);
while(k>1){
while(succesor(k)){
if(valid(k))
if(solutie(k))
tipar();
else{k++;
init(k);}
   }
k--;
}
}
int main(){
f>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++) f>>a[i][j];
for(x=1;x<=n;x++)
{s[1]=x;
back();}
if(t==0) cout<<"nu exista cicluri"<<endl;}

am incercat un backtracking dar nu reusesc sa gasesc conditia aceea...

daca ma poate ajuta cineva i-as fi recunoscator...
astept raspunsuri...multumesc

Editat de moderator : Nu inteleg de ce ai postat in subiectul "Mesaje de eroare".
« Ultima modificare: Februarie 17, 2011, 09:47:54 de către Gabriel Bitis » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines