911-21 guruh talabasi Omonbayev Jaloliddin
Sudoku.
Судоку
(Время: 1 сек. Память: 16 Мб Сложность: 27%)
Судоку размера n называется квадрат со стороной n2, разделенный на n2 средних квадратов со стороной n, каждый из которых разделен на n2 маленьких квадратов. В каждом маленьком квадрате записано число от 1 до n2.
Судоку называется правильным, если в каждом столбце, каждой строке и каждом среднем квадрате встречаются все числа от 1 до n2.
Недавно Вася нарисовал Судоку размера n. Ваша задача – помочь ему определить правильный ли он.
Входные данные
В первой строке входного файла INPUT.TXT содержится число n (1 ≤ n ≤ 10). В следующих n2 строчках содержится по n2 чисел, задающих нарисованный Васей Судоку.
Все числа во входном файле натуральные и не превосходят 100 по модулю.
Выходные данные
Если Судоку правильный, то выведите в выходной файл OUTPUT.TXT слово «Correct», иначе выведите «Incorrect».
Примеры
№
|
INPUT.TXT
|
OUTPUT.TXT
|
1
|
3
1 3 2 5 4 6 9 8 7
4 6 5 8 7 9 3 2 1
7 9 8 2 1 3 6 5 4
9 2 1 4 3 5 8 7 6
3 5 4 7 6 8 2 1 9
6 8 7 1 9 2 5 4 3
5 7 6 9 8 1 4 3 2
2 4 3 6 5 7 1 9 8
8 1 9 3 2 4 7 6 5
|
Correct
|
2
|
1
10
|
Incorrect
|
Sudoku
(Vaqt: 1 sek. Xotira: 16 MB Qiyinchilik: 27%)
O'lchami n bo'lgan Sudoku n2 tomoni n2 o'rta kvadratga bo'lingan kvadrat deyiladi, ularning har biri n2 ta kichik kvadratga bo'linadi. Har bir kichik kvadrat 1 dan n2 gacha raqamlarni o'z ichiga oladi.
Agar har bir ustun, har bir satr va har bir o'rta kvadrat 1 dan n2 gacha bo'lgan barcha raqamlarni o'z ichiga olsa, sudoku to'g'ri deb ataladi.
Vasya yaqinda n o'lchamdagi Sudoku chizdi. Sizning vazifangiz unga to'g'ri yoki yo'qligini aniqlashga yordam berishdir.
Ma'lumotlarni kiritish
INPUT.TXT kirish faylining birinchi qatorida n (1 ≤ n ≤ 10) raqami mavjud. Keyingi n2 qatorlar har biri Vasya tomonidan chizilgan Sudokuni belgilaydigan n2 raqamlarni o'z ichiga oladi.
Kirish faylidagi barcha raqamlar tabiiydir va mutlaq qiymatda 100 dan oshmaydi.
Chiqish
Sudoku to'g'ri bo'lsa, OUTPUT.TXT chiqish fayliga "To'g'ri" so'zini chiqaring, aks holda "Noto'g'ri" chiqaring.
#include
#include
#include
using namespace std;
bool check_sudoku(vector> &sudoku, int n) {
for(int i=0; ivector used(n*n+1);
for(int j=0; jint cur = sudoku[i][j];
if(cur<1 || cur>n*n || used[cur]) {
return false;
}
used[cur] = true;
} }
for(int j=0; jvector used(n*n+1);
for(int i=0; iint cur = sudoku[i][j];
if(cur<1 || cur>n*n || used[cur]) {
return false;
}
used[cur] = true;
} }
for(int i=0; ifor(int j=0; jvector used(n*n+1);
for(int ii=i*n; ii<(i+1)*n; ii++) {
for(int jj=j*n; jj<(j+1)*n; jj++) {
int cur = sudoku[ii][jj];
if(cur<1 || cur>n*n || used[cur]) {
return false;
}
used[cur] = true;
} } } }
return true;
}
int main() {
int n;
cin >> n;
vector> sudoku(n*n, vector(n*n));
for(int i=0; ifor(int j=0; jcin >> sudoku[i][j];
} }
if(check_sudoku(sudoku, n)) {
cout << "Correct\n";
} else {
cout << "Incorrect\n";
}
return 0;}
1>1>1>
Do'stlaringiz bilan baham: |