Mam problem z tym zadaniem ze SPOJ'a https://pl.spoj.pl/problems/SUDOKUC/, nie wiem czemu nie akceptuje mojego programu, dla danych przykładowych wszystko działa.
Oto kod:
#include <cstdio>
const int r = 9;
int t[r][r];
struct sudoku
{
int liczba;
int ile;
};
sudoku s[r];
bool sud();
//----------------------------------------------------------------------
int main()
{
int D;
scanf("%d", &D);
while(D--)
{
for(int i = 0; i < r; i++)
{
for(int j = 0; j < r; j++)
{
scanf("%d", &t[i][j]);
}
}
if(sud())
printf("TAK\n");
else
printf("NIE\n");
}
return 0;
}
//----------------------------------------------------------------------
bool sud()
{
//sprawdzanie wierszy
for(int i = 0; i < r; i++)
{
for(int m = 0; m < r - 1; m++)
{
for(int n = m + 1; n < r; n++)
{
if(t[i][m] == t[i][n])
{
return false;
}
}
}
}
//sprawdzanie kolumn
for(int j = 0; j < r; j++)
{
for(int m = 0; m < r - 1; m++)
{
for(int n = m + 1; n < r; n++)
{
if(t[m][j] == t[n][j])
{
return false;
}
}
}
}
//przypisanie liczb z pierwszej kolumny
for(int i = 0; i < r; i++)
{
s[i].liczba = t[i][0];
s[i].ile = 0;
}
//zliczanie ilosci wystapien poszczegolnych liczb
for(int i = 0; i < r; i++)
{
for(int j = 0; j < r; j++)
{
for(int k = 0; k < r; k++)
{
if(s[k].liczba == t[i][j])
{
s[k].ile++;
break;
}
}
}
}
//sprawdzanie ilosci wystapien poszczegolnych liczb
for(int k = 0; k < r; k++)
{
if(s[k].ile != 9)
return false;
}
return true;
}
Z góry dzięki