a016: 數獨(SUDOKU) https://zerojudge.tw/ShowProblem?problemid=a016
(AC)
#include <iostream>
using namespace std;
int whichOne(int i, int j) {
if (i>=0 && i<=2 && j>=0 && j<=2) {
return 7;
}
else if (i>=3 && i<=5 && j>=0 && j<=2) {
return 4;
}
else if (i>=6 && i<=8 && j>=0 && j<=2) {
return 1;
}
else if (i>=0 && i<=2 && j>=3 && j<=5) {
return 8;
}
else if (i>=3 && i<=5 && j>=3 && j<=5) {
return 5;
}
else if (i>=6 && i<=8 && j>=3 && j<=5) {
return 2;
}
else if (i>=0 && i<=2 && j>=6 && j<=8) {
return 9;
}
else if (i>=3 && i<=5 && j>=6 && j<=8) {
return 6;
}
else if (i>=6 && i<=8 && j>=6 && j<=8) {
return 3;
}
}
int main(){
int array[9][9];
while (cin >> array[0][0]) {
int nine9[9][9] = {0};
int hende[9][9] = {0};
int zhide[9][9] = {0};
int position;
int jump = 0;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (i == 0 && j == 0) {
position = whichOne(i, j);
hende[j][array[i][j]-1] = 1;
zhide[i][array[i][j]-1] = 1;
nine9[position-1][array[i][j]-1] = 1;
continue;
}
else {
cin >> array[i][j];
position = whichOne(i, j);
nine9[position-1][array[i][j]-1] = 1;
hende[j][array[i][j]-1] = 1;
zhide[i][array[i][j]-1] = 1;
}
}
}
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (hende[i][j] != 1 || zhide[i][j] != 1 || nine9[i][j] != 1 ){
jump = 1;
break;
}
}
if (jump == 1) {
break;
}
}
if (jump == 1) {
cout << "no" << endl;
}
else {
cout << "yes" << endl;
}
}
return 0;
}