Advertisement
alexarcan

problema_cu_relatii_Lab_DSA

Dec 10th, 2014
386
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.98 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int x[4], N = 4;
  4. int rel[4][4];
  5.  
  6.  
  7.  
  8. int acceptable(int k, int size){
  9.     int j;
  10.     for(int i = 0; i<size; i++)
  11.         for ( j = 0; j < size; j++){
  12.             if (x[j] == k)  //nu exista
  13.                 return 0;
  14.  
  15.             if (rel[k][x[j]] != 1) //prieten cu ultimul din lista
  16.                 return 0;
  17.  
  18.         return 1;// primul si ultimul  om sunt vecini
  19.         }
  20. }
  21.  
  22. int solution(int k, int i){
  23.     return (i == N - 1 && rel[N - 1][0] == rel[0][N - 1] == 1); //4 elemente
  24. }
  25.  
  26. void printsolution(){
  27.  
  28.     for (int i = 0; i < N; i++)
  29.         printf("%d ", x[i]);
  30. }
  31.  
  32. void back(int i){
  33.  
  34.     for (int k = 1; k <= N; k++)
  35.     if (acceptable(k, N)){
  36.         x[i] = k;
  37.  
  38.         if (solution(k, i)){
  39.             printsolution();
  40.             printf("\n");
  41.         }
  42.  
  43.         else
  44.             back(i + 1);
  45.         x[i] = -1;
  46.  
  47.     }
  48. }
  49.  
  50. int main(void){
  51.     rel[0][1] = 1;
  52.     rel[1][0] = 1;
  53.     rel[1][2] = 1;
  54.     rel[2][1] = 1;
  55.     rel[2][3] = 1;
  56.     rel[3][2] = 1;
  57.     rel[3][4] = 1;
  58.     rel[4][3] = 1;
  59.     rel[4][0] = 1;
  60.     rel[0][4] = 1;
  61.  
  62.     back(0);
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement