fork download
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. public class Test
  5. {
  6. static bool Stimmel(List<int> ultetes)
  7. {
  8. for (var i = 0; i < ultetes.Count; i++)
  9. {
  10. int pos = ultetes.IndexOf(ultetes[i] - 1);
  11. if (pos >= 0)
  12. {
  13. int d = Math.Abs(pos - i);
  14. if (d < 2 || d > 3) return false;
  15. }
  16. pos = ultetes.IndexOf(ultetes[i] + 1);
  17. if (pos >= 0)
  18. {
  19. int d = Math.Abs(pos - i);
  20. if (d < 2 || d > 3) return false;
  21. }
  22. }
  23. return true;
  24. }
  25.  
  26. static List<int> Keres(List<int> elemek,List<int> eddig)
  27. {
  28. if (!Stimmel(eddig))
  29. return null;
  30. if (elemek.Count == 0)
  31. return eddig;
  32. for(int i = 0; i < elemek.Count; i++)
  33. {
  34. int elem = elemek[i];
  35. elemek.Remove(elem);
  36. eddig.Add(elem);
  37. List<int> eredmeny = Keres(elemek, eddig);
  38. if (eredmeny != null)
  39. return eredmeny;
  40. eddig.Remove(elem);
  41. elemek.Insert(i, elem);
  42. }
  43. return null;
  44. }
  45.  
  46. static void Main(string[] args)
  47. {
  48. List<int> elemek=new List<int>{1,2,3,4};
  49. List<int> eredmeny = Keres(elemek, new List<int>());
  50. if (eredmeny != null)
  51. {
  52. Console.Write(eredmeny[0]);
  53. for (int i = 1; i < eredmeny.Count; i++)
  54. Console.Write(", " + eredmeny[i]);
  55. }
  56. }
  57. }
Success #stdin #stdout 0.01s 131520KB
stdin
Standard input is empty
stdout
2, 4, 1, 3