Afişează mesaje
Pagini: 1 [2]
26  infoarena - concursuri, probleme, evaluator, articole / Informatica / Numar de lanturi elementare ! : Februarie 11, 2010, 20:49:30
Cum pot afla numarul minim de lanturi elementare ce alcatuiesc un graf neorientat, intr-un timp extrem de scurt -backtracking exclus- pe numere extrem de mari ?
27  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Afisare permutari folosind un vector dat : Ianuarie 17, 2010, 19:30:37
OK, am gasit solutia... in cadrul functiei de tiparire trebuia folosit inca un vector  ( v[ st [ i ] ] ).
28  infoarena - concursuri, probleme, evaluator, articole / Informatica / Afisare permutari folosind un vector dat : Ianuarie 17, 2010, 18:49:48
De ceva vreme ma tot chinui sa gasesc metoda de rezolvare a acestui tip de problema prin folosirea algoritmului de backtrack,
insa solutia imi tot scapa...probabil din cauza lipsei unei fundatii solide a backtracking-ului.
V-as ruga sa modificati urmatorul algoritm,ce afiseaza deasemenea toate permutarile posibile, unde metoda de input difera insa
{1,2,3......n} :

Cod:
#include<iostream.h>
#include<fstream.h>
int n,st[100];
void init (int k)
{
st[k]=0;
}
int succesor(int k)
{
if(st[k]<n)
{
st[k]=st[k]+1;
return 1;
}
else return 0;
}
int valid(int k)
{
for(int i=1;i<k;i++)
if(st[k]==st[i]) return 0;
return 1;
}
int solutie (int k)
{
return k==n;
}
void print()
{
for(int i=1;i<=n;i++)
cout<<st[i]<<" ";
cout<<endl;
}
void backtrack(int k)
{
init(k);
while(succesor(k))
if(valid(k))
if(solutie(k)) print();
else backtrack(k+1);
}
main()
{
cout<<"n= ";
cin>>n;
backtrack(1);
}

Din nou repet, metoda de input in cazul programului pe care vreau sa il obtin, se va baza pe un n citit, si deasemenea un n numar de elemente citite:
Ex:
Cod:
 n=3
 3 4 8
Pagini: 1 [2]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines