Sunteți pe pagina 1din 6

#include <stdio.

h>

int x[10];

int viz[10];

int n;

char s[10];

void afisare (int k)

int i;

for (i=1;i<=n;i++)

printf("%c", s[x[i]-1]);//trb sa scadem 1 deoarece caracterele incep de la 0

printf("\n");

void back (int k)

int i;

for (i=1;i<=n;i++)//vectorul x e pentru solutie

if (viz[i] == 0 )

x[k] = i;

viz[i] = 1;

if (n == k)

afisare(k);

else

back (k+1);

viz[i] = 0 ; // recursiv
}

int main ()

scanf("%s", s);//permutari codificate

n=strlen(s);

back(1);

Se dă o tablă de șah formată din n linii și m coloane, definind n*m zone, unele dintre ele fiind
libere, altele conținând obstacole. În zona de coordonate 1 1 se află un cal care se poate
deplasa pe tablă în L, ca la șah, fără a părăsi tabla, fără a trece prin zone care conțin
obstacole și fără a trece de două ori prin aceeași zonă.
Determinați o modalitate prin care calul poate ajunge în zona de coordonate n m – unde se
află o căpiță de fân.

#include <stdio.h>

#include<iostream>

using namespace std;

int m, n, a[10][10], gasit;

int dl[]={-1, 1, 2, 2, 1, -1, -2, -2};


int dc[]={2, 2, 1, -1, -2, -2, -1, 1};

void Citire ()

cin>>n>>m;

int i, j;

for(i=1;i<n;i++)

for(j=1;j<n;j++)

cin>>a[i][j];

void afisare ()

int i, j;

for(i=1;i<=n;i++)

for(j=1;j<=m;j++)

if ( i == 1 && j == 1)

printf ("1 ");

else

if ( a[i][j] == 1)

printf ("0 ");

else

printf ("%d ", a[i][j]);

printf("\n");

}
}

void back(int l, int c, int k)

a[l][c] = k;

if ( l == n && c == m)

afisare();

gasit = 1;

else

for (int i=0;i<8 && gasit == 0;i++)//daca mai am pozitii in care sa ma duc

int ln, cn;

ln=l+dl[i];

cn=c+dc[i];

//validare

if (ln >=1 && ln <=n && cn >=1 && cn <= m)

if ( a[ln][cn] == 0)//daca pozitia noua este in int matricii, trb sa verif dadca este libera

back(ln, cn, k+1);

a[l][c] = 0;//dca sol pe care o generam in mom de fata nu este buna, atunci cand recursivitatea se va
intoarce in acest punct trb sa elib poz de l si c ca sa ne pregatim pt a genera o noua sol cu alta varianta
}

int main ()

Citire();

back(1, 1, 1);

Se dă un număr natural nenul n. Să se determine toate modalităţile distincte de


descompunere a numărului n în sumă de 3 şi 5.

1. #include <iostream>
2. #define N 1005
3. using namespace std;
4.  
5.  
6. int a[N],x[N],n,suma[N];
7. void Afisare(int k)
8. {
9. for(int i=1;i<=k;i++) cout<<x[i]<<" ";
10. cout<<"\n";
11. }
12.  
13. void Back(int k)
14. { for(int i=x[k-1];i<=n-suma[k-1] && i<=5;i=i+2)
15. { x[k]=i;
16. suma[k]=suma[k-1]+x[k];
17. if(suma[k]==n) Afisare(k);
18. else Back(k+1);
19.  
20. }
21.  
22. }
23. int main()
24. { cin>>n;
25. x[0]=3;
26. Back(1);
27. return 0;
28. }

S-ar putea să vă placă și