Advertisement
alexarcan

probl 2 DSA LAB

Dec 4th, 2014
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.94 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. int solution(int k, int i){
  22.     return (i == N - 1 && rel[N - 1][0] == rel[0][N - 1] == 1); //4 elemente  
  23. }
  24.  
  25. void printsolution(){
  26.  
  27.     for (int i = 0; i < N; i++)
  28.         printf("%d ", x[i]);
  29. }
  30.  
  31. void back(int i){
  32.  
  33.     for (int k = 1; k <= N; k++)
  34.     if (acceptable(k, N)){
  35.         x[i] = k;
  36.  
  37.         if (solution(k, i)){
  38.             printsolution();
  39.             printf("\n");
  40.         }
  41.  
  42.         else
  43.             back(i + 1);
  44.         x[i] = -1;
  45.  
  46.     }
  47. }
  48.  
  49. int main(void){
  50.     rel[0][1] = 1;
  51.     rel[1][0] = 1;
  52.     rel[1][2] = 1;
  53.     rel[2][1] = 1;
  54.     rel[2][3] = 1;
  55.     rel[3][2] = 1;
  56.     rel[3][4] = 1;
  57.     rel[4][3] = 1;
  58.     rel[4][0] = 1;
  59.     rel[0][4] = 1;
  60.  
  61.     back(0);
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement