Advertisement
Guest User

Untitled

a guest
May 24th, 2021
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "conio.h"
  4. int a[10],nr=0,n;
  5. //funcţia de afişare a soluţiei
  6. void scrie(void)
  7. {
  8. int i;
  9. printf("Solutia numărul: %d\n",nr++);
  10. for(i=0;i < n;i++) printf("Regina de pe linia %d pe coloana %d\n",(i+1),a[i]+1); putchar("\n"); }
  11. void reg(int i)
  12. {
  13. int k,j,l;
  14. //în cazul în care am aşezat n regine am ajuns la soluţie
  15. if(i==n)
  16. {
  17. //afişăm soluţia
  18. scrie();
  19. putchar("\n");
  20. getch();
  21. }
  22. else
  23. //pentru fiecare nouă regină avem n posibile aşezări
  24. for(l=0;l < n;l++) { //încercăm să aşezăm regina i pe poziţia 1 a[i]=l; //verificăm ca regina i să nu se atace cu nici o regină deja //aşezată (deci cu fiecare din reginele de la 0 la i-1 for(k=j=0; j < i; j++) //dacă găsim o regină pe aceeaşi coloană (deci a[i]==a[j]) //sau dacă se atacă pe diagonală (abs(a[i] -a[j])==(i-j)) //atunci facem pe k egal cu 1 if((a[i]==a[j]) || (abs(a[i]-a[j])==(i-j))) k=1; //dacă k=0 înseamnă că verificarea anterioară (a tuturor reginelor de //la 0 la i-1 deja aşezate nu a găsit regine care să se atace cu //regina i deci considerăm regina i aşezată şi apelăm funcţia //recursivă încercând să aşezăm regina i+1 if(!k) reg(i+1); } } void main(void) { int j; printf("Introd dimensiunea tablei:\n"); scanf("%d",&n); for(j=0;j < n;j++) a[j]=o; //iniţializăm cu o vectorul ce reţine poziţia reginelor reg(0); //apelăm funcţia de aşezare a reginelor pornind de la regina 0 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement