Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.18 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7.  
  8. namespace buvosnegyzet
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14.  
  15. //nxn-es mátrix | ye
  16. //n egész és n>0 | ye
  17. //számok szóközzel elválasztva | kiiratás! ||ye
  18. //1 - minden sor / oszlop / főátló / mellékátló -> számok összege egyezik |ye
  19. //2 - egytől n2 ig minden szám megtalálható
  20. using (TextReader tr = new StreamReader(args[0]))
  21. {
  22. String line = null;
  23. while ((line = tr.ReadLine()) != null)
  24. {
  25. int szam = int.Parse(line);
  26. String sor = tr.ReadLine();
  27.  
  28. int[,] tomb = new int[szam, szam];
  29.  
  30. for (int i = 0; i < szam; i++)
  31. {
  32. String[] token = sor.Split(' ');
  33. for (int j = 0; j < szam; j++)
  34. {
  35. tomb[i, j] = int.Parse(token[j]);
  36. }
  37.  
  38. if (i < szam - 1)
  39. sor = tr.ReadLine();
  40. }
  41.  
  42. int sorosszeg = 0;
  43. int oszloposszeg = 0;
  44. int foatlo = 0;
  45. int mellekatlo = 0;
  46.  
  47. for (int i = 0; i < szam; i++)
  48. sorosszeg += tomb[0, i];
  49.  
  50. for (int i = 0; i < szam; i++)
  51. oszloposszeg += tomb[i, 0];
  52.  
  53. for (int i = 0, j = 0; i < szam && j < szam; i++, j++)
  54. {
  55. foatlo += tomb[i, j];
  56. }
  57.  
  58. for (int i = 0, j = (szam - 1); i < szam && j >= 0; i++, j--)
  59. mellekatlo += tomb[i, j];
  60.  
  61. Boolean elsofelt = false;
  62. Boolean masodikfelt = true;
  63. if (sorosszeg == oszloposszeg && oszloposszeg == foatlo && foatlo == mellekatlo)
  64. elsofelt = true;
  65.  
  66. int negyzetszam = szam * szam;
  67.  
  68. int[] negyzettomb = new int[negyzetszam];
  69. int q = 0;
  70. for (int i = 1; i <= negyzetszam; i++)
  71. {
  72. negyzettomb[q] = i;
  73. q++;
  74. }
  75. int seged = -1;
  76. for (int i = 0; i < szam; i++)
  77. {
  78. for (int k = 0; k < szam; k++)
  79. {
  80. for (int l = 0; l < negyzetszam; l++)
  81. {
  82. if (tomb[i, k] == negyzettomb[l])
  83. {
  84. tomb[i, k] = seged;
  85. seged--;
  86. negyzettomb[l] = seged;
  87. seged--;
  88.  
  89. }
  90. }
  91. }
  92. }
  93.  
  94.  
  95. Boolean valami = false;
  96. for (int i = 0; i < szam; i++)
  97. {
  98. for (int k = 0; k < szam; k++)
  99. if (tomb[i, k] >= 0)
  100. {
  101. valami = true;
  102. break;
  103. }
  104. if (valami)
  105. {
  106. masodikfelt = false;
  107. break;
  108. }
  109.  
  110. }
  111. if (elsofelt)
  112. {
  113. if (masodikfelt)
  114. Console.WriteLine("YES");
  115. else
  116. Console.WriteLine("NO");
  117. }
  118. else
  119. Console.WriteLine("NO");
  120.  
  121. }
  122. }
  123. }
  124. }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement