Каждая строка содержит каждое число от 1 до N2, по одному разу.
Каждый столбец содержит каждое число от 1 до N2, по одному разу.
Разделите матрицу N2xN2 на N2 неперекрывающихся подматриц NxN. Каждая подматрица содержит каждое число от 1 до N2, по одному разу.
Мой код:
#include <iostream>
using namespace std;
int main()
{
int i, j, k, no, n, sum, t[36][36], validsum;
cin >> no;
for (k = 0; k < no; k++)
{
cin >> n;
for (i = 0; i < n * n; i++)
{
for (j = 0; j < n * n; j++)
{
cin >> t[i][j];
}
}
bool valid = 1;
validsum = ((n*n)*(n*n+1))/2;
sum = 0;
if (valid == 1)
{
for (i = 0; (i < n * n) && valid == 1; i++)
{
sum = 0;
for (j = 0; (j < n * n) && sum < validsum; j = j+1) {
sum += t[i][j];
}
if (sum != validsum)
valid = 0;
}
}
if (valid == 1)
{
for (j = 0; j < n * n && valid == 1; j++)
{
sum = 0;
for (i = 0; i < n * n && sum < validsum; i++)
{
sum += t[i][j];
}
if (sum != validsum)
valid = 0;
}
}
cout << "Case #" << k + 1 << ": ";
if (valid == 1)
cout << "Yes" << endl;
else
cout << "No" << endl;
}
}
Мои результаты:
Case #1: Yes
Case #2: No
Case #3: No
Примеры результатов:
Case #1: Yes
Case #2: No
Case #3: No
Это потому, что это недостаточно быстро?
No
. - person   schedule 22.03.20212 + 2 = 1 + 3
например. - person Damien   schedule 22.03.2021No
но ваш код возвращаетYes
в обоих тестах. - person   schedule 22.03.2021