fork(4) download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. //sprawdzenie wierszy i kolumn czy liczby sie powtarzaja
  6. bool wiersze_kolumny(int t[9][9])
  7. {
  8. for(int i=0; i<9; i++)
  9. {
  10. for(int j=0; j<8; j++)
  11. {
  12. for(int m=j+1; m<9; m++)
  13. {
  14. if(t[i][j] == t[i][m] || t[j][i] == t[m][i])
  15. {
  16. return false;
  17. }
  18. }
  19. }
  20. }
  21. return true;
  22. }
  23.  
  24. bool maly_kwadrat(int t[9][9])
  25. {
  26. int w[9][2], suma, a, b;
  27.  
  28. //przepisanie wektora
  29. for(int i=0; i<9; i++)
  30. {
  31. w[i][0] = t[0][i];
  32. }
  33.  
  34. //petla d przeskakuje miedzy malymi kwadratami
  35. for(int d=0; d<9; d++)
  36. {
  37. suma=0;
  38.  
  39. //zerowanie wektora zliczajacego liczby
  40. for(int i=0; i<9; i++)
  41. {
  42. w[i][1] = 0;
  43. }
  44.  
  45. //ustawienie wierszy i kolumn dla okreslonego kwadratu
  46. switch(d)
  47. {
  48. case 0: a=0; b=0; break;
  49. case 1: a=0; b=3; break;
  50. case 2: a=0; b=6; break;
  51. case 3: a=3; b=0; break;
  52. case 4: a=3; b=3; break;
  53. case 5: a=3; b=6; break;
  54. case 6: a=6; b=0; break;
  55. case 7: a=6; b=3; break;
  56. case 8: a=6; b=6; break;
  57. }
  58.  
  59. for(int i=0; i<3; i++)
  60. {
  61. for(int j=0; j<3; j++)
  62. {
  63. for(int m=0; m<9; m++)
  64. {
  65. //sprawdzenie czy wszystkie cyfry sa w kwadracie
  66. if(t[i+a][j+b] == w[m][0] && w[m][1] == 0)
  67. {
  68. w[m][1] = 1;
  69. suma++;
  70. break;
  71. }
  72. }
  73. }
  74. }
  75. if(suma!=9) return false;
  76. }
  77. return true;
  78. }
  79.  
  80.  
  81. int main()
  82. {
  83. int ile;
  84. int tab[9][9];
  85.  
  86. cin>>ile;
  87.  
  88. //wczytanie tablicy
  89. for(int p=0; p<ile; p++)
  90. {
  91. for(int i=0; i<9; i++)
  92. for(int j=0; j<9; j++)
  93. {
  94. cin>>tab[i][j];
  95. }
  96.  
  97. if(wiersze_kolumny(tab) == true)
  98. {
  99. if(maly_kwadrat(tab) == true) cout<<"TAK"<<endl;
  100. else cout<<"NIE"<<endl;
  101. }
  102. else cout<<"NIE"<<endl;
  103. }
  104. return 0;
  105. }
Success #stdin #stdout 0s 4496KB
stdin
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
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

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

2 5 0 7 6 10 3 4 8
10 8 6 3 4 5 2 7 0
3 7 4 8 2 0 6 10 5
4 2 10 6 3 8 5 0 7
8 6 3 5 0 7 10 2 4
5 0 7 4 10 2 8 3 6
7 10 5 0 8 3 4 6 2
0 4 2 10 5 6 7 8 3
6 3 8 2 7 4 0 5 10

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

5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
stdout
TAK
NIE
TAK
NIE
NIE
NIE
TAK
NIE
NIE