C代码:直接遍历行列、比对行列就行啊
bool equal(int row, int col, const int** grid, int gridSize) {
for (int i = 0; i < gridSize; i++) {
if (grid[row][i] != grid[i][col]) {
return false;
}
}
return true;
}
int equalPairs(int** grid, int gridSize, int* gridColSize) {
int res = 0;
for (int row = 0; row < gridSize; row++) {
for (int col = 0; col < gridSize; col++) {
if (equal(row, col, grid, gridSize)) {
res++;
}
}
}
return res;
}
C代码:很无语的代码。。
bool equals(int* arr1, int* arr2, int n) {
for (int i = 0; i < n; ++i) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
int equalPairs(int** grid, int gridSize, int* gridColSize){
int m = gridSize;
int n = gridColSize[0];
int** arr = (int**)malloc(sizeof(int*) * m);
for(int i = 0; i < m; ++i) {
arr[i] = (int*)malloc(sizeof(int) * n);
}
for(int i = 0; i < m; ++i) {
for(int j = 0; j < n; ++j) {
arr[j][i] = grid[i][j];
}
}
int cnt = 0;
for(int i = 0; i < m; ++i) {
for(int j = 0; j < n; ++j) {
if (equals(grid[i], arr[j], m)) {
++cnt;
}
}
}
return cnt;
}