catalyn

problema coliere

Nov 5th, 2015
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. ifstream f("permutari.in");
  7. ofstream g("permutari.out");
  8.  
  9. int st[100],n,v[100];
  10.  
  11. int valid(int p)
  12. {
  13. int i;
  14. for (i=1;i<p;i++)
  15. {
  16. if(v[i]==1 && v[i+1]==3 || v[i]==3 && v[i+1]==1 && v[i]==4 && v[i+1]==5 || v[i]==5 && v[i+1]==4)
  17. return false;
  18. if(v[i]==v[i+1])
  19. return false;
  20.  
  21. if(st[i]==st[p])
  22. return false;
  23. return true;
  24. }
  25. }
  26.  
  27. void afis(int p)
  28. {
  29. int i;
  30. for (i=1;i<=p;i++)
  31. cout<<st[i]<<" ";
  32. cout<<'\n';
  33. }
  34.  
  35. int solutie(int p)
  36. {
  37. if (p==n)
  38. return 1;
  39. return 0;
  40. }
  41.  
  42. void backtr(int p)
  43. {
  44. int i;
  45. for (i=1;i<=n;i++)
  46. {
  47. st[p]=i;
  48. if (valid(p))
  49. if (solutie(p))
  50. afis(p);
  51. else
  52. backtr(p+1);
  53. }
  54. }
  55.  
  56. int main()
  57. {
  58. cin>>n;
  59.  
  60. for (int i=1;i<=n;i++)
  61. f>>v[i];
  62. for(int i=1;i<=n;i++)
  63. st[i]=i;
  64.  
  65. backtr(1);
  66.  
  67.  
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment