Beruflich Dokumente
Kultur Dokumente
{a,x,c,f,g}. Dac primele patru cuvinte generate sunt, n ordine, aaa, aax, aac, aaf,
scriei ultimele trei cuvinte care ncep cu litera a, n ordinea n care vor fi generate
#include <iostream>
using namespace std;
int st[4],k,n,a,b,c;
void init (int k)
{
st[k]=0;
}
int succesor (int k)
{
if (st[k]<5)
{
st[k]++;
return 1;
}
return 0;
}
int valid (int k)
{
if (st[1]!=1) return 0;
return 1;
}
int solutie (int k)
{
return n==k;
}
void tipar (int k)
{
int numar=0;
for (int i=1;i<=n;i++) numar=numar*10+st[i];
a=b;
b=c;
c=numar;
}
void back (int k)
{
init (k);
while (succesor(k))
if (valid(k))
if (solutie(k))
tipar(k);
else back(k+1);
}
while (aux)
{
if (aux%10==1) cout<<"a";
else if (aux%10==2) cout<<"x";
else if (aux%10==3) cout<<"c";
else if (aux%10==4) cout<<"f";
else if (aux%10==5) cout<<"g";
aux/=10;
}
int main()
{
n=3;
back(1);
invers(a); cout<<" ";
invers(b); cout<<" ";
invers(c);
}
Se genereaz, prin metoda backtracking, toate modalitile de aezare a numerelor
naturale de la 1 la 5, astfel nct oricare 2 numere consecutive s nu se afle pe poziii
alturate. Dac primele dou soluii sunt: (1,3,5,2,4) i (1,4,2,5,3), care este prima
soluie generat n care primul numr este 4? (4 p.)
a. (4, 1, 3, 2, 5) b. (4,2,5,1, 3) c. (4, 3, 5, 3, 1) d. (4, 1, 3, 5, 2)
#include <iostream>
using namespace std;
int st[6],k,n,a,b,c,OK=1;
void init (int k)
{
st[k]=0;
}
int succesor (int k)
{
if (st[k]<5)
{
st[k]++;
return 1;
}
return 0;
}
{
}
st[k]=-1;
#include <iostream>
using namespace std;
int st[46],k,c,n;
char litere[]="caiet";
void init (int k)
{
st[k]=-1;
}
int succesor (int k)
{
if (st[k]<4)
{
st[k]++;
return 1;
}
return 0;
}
int valid (int k)
{
for (int i=1;i<k;i++)
if (st[i]==st[k]) return 0;
return 1;
}
int solutie (int k)
{
return n==k;
}
void tipar (int k)
{
c++;
}
void back (int k)
{
init (k);
while (succesor(k))
if (valid(k))
if (solutie(k))
tipar(k);
else back(k+1);
}
int main()
{
n=5;
back(1);
cout<<c;
}
Utiliznd metoda backtracking, se genereaz numerele naturale formate din exact 3 cifre i
care au suma cifrelor egal cu 4, n aceast ordine: 103, 112, 121, 130, 202, 211, 220,
301, 310, 400. Dac utilizm acelai algoritm pentru a genera toate numerele de 4 cifre
care au suma cifrelor egal cu 7, precizai care este numrul generat imediat dup 1222.
(4p.)
a. 1231 b. 1223 c. 1213 d. 1321
#include <iostream>
using namespace std;
int st[6],k,c,n,OK=1,check=0;
char litere[]="caiet";
return OK;
}
if (check)
{
int s=0;
for (i=1;i<=n;i++)
{
s+=st[i];
nr=nr*10+st[i];
}
if (s==7) { OK=0; check=0; cout<<nr;}
}
for (i=1;i<=n;i++)
nr=nr*10+st[i];
if (nr==1222)
check=1;
int main()
{
n=4;
back(1);
}