Mam problem z tym http://pl.spoj.com/problems/SUDOKUC/ zadaniem na spoju. Jak sprawdzam lokalnie to działa, a sędzia odrzuca. Myślałem że może z endlajnami coś nie tak, ale nie mogłem znaleźć błędu.
#include <iostream>
using namespace std;
bool check(int tab[9][9]); //sprawdzanie sudoku
////////////////////////////////////////////////////////////////////////////////
int main()
{
int t;
cin >> t;
for (int x = 0; x < t; x++)
{
int tab[9][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} };
for (int i = 0; i < 9; i++) //zapełnianie tablicy
{
for (int j = 0; j < 9; j++)
{
cin >> tab[i][j];
}
}
bool ans = 0;
ans = check(tab);
if (ans == 1) cout << "TAK";
else cout << "NIE";
cout << endl;
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////////
bool check(int tab[9][9])
{
int suma = 0;
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
suma += tab[i][j];
if (j == 8 && suma != 45) return 0; //jezeli suma cyfr w jednym bloku jest różna od 45 zwraca false
}
}
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9; j++)
{
suma += tab[j][i];
if (j == 8 && suma != 45) return 0;//j.w.
}
}
return 1;//jeżeli wlyniki się zgadzały zwraca true
}