fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. bool wypelnijTablice(int tablica[9][9], bool poprawne)
  6. {
  7. for (int i = 0; i <9; i++)
  8. {
  9. for (int j = 0; j <9; j++)
  10. {
  11. cin >> tablica[i][j];
  12. if (tablica[i][j] < 0 || tablica[i][j] > 9)
  13. {
  14. poprawne = false;
  15. break;
  16. }
  17. }
  18. if (poprawne == false)
  19. break;
  20. }
  21.  
  22. return poprawne;
  23. }
  24.  
  25. bool sprawdzWiersze(int tablica[9][9], bool poprawne)
  26. {
  27. for (int i = 0; i < 9; i++) // petla przechodzaca po wierszach
  28. {
  29. for (int j = 0; j <9; j++) // petla przechodzaca po kolumnach w wierszu
  30. {
  31. for (int k = j + 1; k < 9; k++) // petla przechodzaca po pozostalych elementach w wierszu
  32. {
  33. // szukajaca czy sa powtarzajace sie wyrazy w wierszu
  34. if (tablica[i][j] == tablica[i][k])
  35. {
  36. poprawne = false;
  37. break;
  38. }
  39. }
  40. if (poprawne == false)
  41. break;
  42. }
  43. if (poprawne == false)
  44. break;
  45. }
  46.  
  47. return poprawne;
  48. }
  49.  
  50. bool sprawdzKolumny(int tablica[9][9], bool poprawne)
  51. {
  52. for (int i = 1; i < 9; i++)
  53. {
  54. for (int j = 0; j <9; j++)
  55. {
  56. for (int k = i + 1; k < 9; k++)
  57. {
  58. if (tablica[i][j] == tablica[k][j])
  59. {
  60. poprawne = false;
  61. break;
  62. }
  63. }
  64. if (poprawne == false)
  65. break;
  66. }
  67. if (poprawne == false)
  68. break;
  69. }
  70.  
  71. return poprawne;
  72. }
  73.  
  74. bool sprawdz3x3(int tablica[9][9], bool poprawne)
  75. {
  76. int pomocnicza[9];
  77. int licznik;
  78.  
  79. for (int k = 0; k < 9; k += 3)
  80. {
  81. for (int l = 0; l < 9; l += 3)
  82. {
  83. licznik = 0;
  84. for (int i = 0; i <3; i++)
  85. {
  86. for (int j = 0; j < 3; j++)
  87. {
  88. pomocnicza[licznik] = tablica[k + i][l + j];
  89. licznik ++;
  90. }
  91. }
  92.  
  93. for (int i = 0; i < 9; i++)
  94. {
  95. for (int j = i + 1; j < 9; j++)
  96. {
  97. if (pomocnicza[i] == pomocnicza[j])
  98. {
  99. poprawne = false;
  100. break;
  101. }
  102. }
  103. if (poprawne == false)
  104. break;
  105. }
  106. if (poprawne == false)
  107. break;
  108. }
  109. if (poprawne == false)
  110. break;
  111. }
  112.  
  113. return poprawne;
  114. }
  115.  
  116. int main()
  117. {
  118. int sudoku[9][9];
  119. bool poprawne;
  120. int testy;
  121.  
  122. cin >> testy;
  123. for (int i = 1; i <= testy; i ++)
  124. {
  125. poprawne = true;
  126. poprawne = wypelnijTablice(sudoku, poprawne);
  127. if (poprawne != false)
  128. poprawne = sprawdzWiersze(sudoku, poprawne);
  129. if (poprawne != false)
  130. poprawne = sprawdzKolumny(sudoku, poprawne);
  131. if (poprawne != false)
  132. poprawne = sprawdz3x3(sudoku, poprawne);
  133.  
  134. if (poprawne)
  135. cout << "TAK" << endl;
  136. else
  137. cout << "NIE" << endl;
  138. }
  139.  
  140. return 0;
  141. }
  142.  
Success #stdin #stdout 0s 15240KB
stdin
5
2 5 1 7 6 9 3 4 8
9 8 6 3 4 5 2 7 1
3 7 4 8 2 1 6 9 5
4 2 9 6 3 8 5 1 7
8 6 3 5 1 7 9 2 4
5 1 7 4 9 2 8 3 6
7 9 5 1 8 3 4 6 2
1 4 2 9 5 6 7 8 3
6 3 8 2 7 4 1 5 9

100 5 1 7 6 9 3 4 8
9 8 6 3 4 5 2 7 1
3 7 4 8 2 1 6 9 5
4 2 9 6 3 8 5 1 7
8 6 3 5 1 7 9 2 4
5 1 7 4 9 2 8 3 6
7 9 5 1 8 3 4 6 2
1 4 2 9 5 6 7 8 3
6 3 8 2 7 4 1 5 9

4 2 9 6 3 8 5 1 7
8 6 3 5 1 7 9 2 4
5 1 7 4 9 2 8 3 6
7 9 5 1 8 3 4 6 2
1 4 2 9 5 6 7 8 3
6 3 8 2 7 4 1 5 9
2 5 1 7 6 9 3 4 8
9 8 6 3 4 5 2 7 1
3 7 4 8 2 1 6 9 5

2 5 1 7 6 9 3 4 8
9 8 6 3 4 5 2 7 1
3 7 4 8 2 1 6 9 5
4 2 9 6 3 8 5 1 7
8 6 3 5 1 7 9 2 4
5 1 7 4 9 2 8 3 6
7 9 5 1 8 3 4 6 2
1 4 2 9 5 6 7 8 3
6 3 8 2 7 4 1 9 5

2 5 1 7 6 9 3 4 8
9 8 6 3 4 5 2 7 1
3 7 4 8 2 1 6 9 5
4 2 9 6 3 8 5 1 7
8 6 3 5 1 7 9 2 4
5 1 7 4 9 2 8 3 6
7 9 5 1 8 3 4 6 2
1 4 2 9 8 6 7 5 3
6 3 8 2 7 4 1 5 9
stdout
TAK
NIE
NIE
NIE
NIE