/* Problema colorarii unei harti. Fiind data o harta cu n tari, se cer toate solutiile de colorare a hartii, utilizand cel mult 4 culori, a.i. 2 tari cu frontiera comuna sa fie colorate diferit Harta este furnizata programului cu ajutorul unei matrici A(n,n) definita astfel: A[i,j]=1, daca tara i are frontiera comuna cu tara j si A[i,j]=0, in caz contrar Matricea A este simetrica - stiva are inaltimea n si pe fiecare nivel ia valori intre 1 si 4 - fiecare nivel k simbolizeaza tara k - st[k] semnifica culoarea tarii k */ #include #include int st[10],a[10][10],n,k,nr; void Init() { st[k]=0; } int Am_Succesor() { if(st[k]0) { do { } while ((As=Am_Succesor()) && !Valid()); if (As) if (Solutie()) Tipar(); else { k++; Init(); } else k--; } } void main() { clrscr(); printf("nr tari="); scanf("%d",&n); nr=0; // matricea A reprezentand tarile cu vecinii se va completa // tinand cont ca este simetrica for (int i=1;i<=n;i++) for (int j=1;j<=i-1;j++) { printf("a[%d,%d]=",i,j); scanf("%d",&a[i][j]); a[j][i]=a[i][j]; } back(); printf("nr. solutiilor=%d",nr); getch(); }