#include <iostream>= using namespace std; const int nGridCount = 8; int s_color[nGridCount][nGridCount] = { 34, 92, 26, 34, 93, 10, 34, 39, 10, 10, 34, 39, 15, 15, 39, 93, 15, 26, 26, 93, 93, 39, 10, 15, 26, 34, 39, 15, 39, 34, 34, 26, 34, 39, 39, 34, 52, 26, 10, 10, 26, 34, 10, 15, 52, 52, 15, 39, 93, 15, 26, 26, 15, 39, 93, 93, 34, 52, 93, 10, 93, 10, 39, 26 }; #define OUTPUT_PAIR(x1, y1, x2, y2) printf("(%d, %d), (%d, %d)\n", x1, y1, x2, y2);\ printf("%d %d\n", s_color[x1][y1], s_color[x2][y2]) int main() { // 横向地检查一遍 for (int i = 0; i < nGridCount; i++) { for (int j = 0; j < nGridCount - 1; j++) { // xx | x | xx | x | x xx | xx x // x | xx | x | xx | | 这些情况的处理 if ( s_color[i][j] == s_color[i][j+1]) { // ? // xx 检查后端这两个点 // ? if (i - 1 >= 0 && j + 2 < nGridCount && s_color[i-1][j+2] == s_color[i][j]) { OUTPUT_PAIR(i, j+2, i-1, j+2); } if (i + 1 < nGridCount && j + 2 < nGridCount && s_color[i+1][j+2] == s_color[i][j]) { OUTPUT_PAIR(i, j+2, i+1, j+2); } // ? // xx 检查前端这两个点 // ? if (i - 1 >= 0 && j - 1 >= 0 && s_color[i-1][j-1] == s_color[i][j]) { OUTPUT_PAIR(i, j-1, i-1, j-1); } if (i + 1 < nGridCount && j - 1 >= 0 && s_color[i+1][j-1] == s_color[i][j]) { OUTPUT_PAIR(i, j-1, i+1, j-1); } // ? xx ? 检查这两个点 if (j - 2 >= 0 && s_color[i][j-2] == s_color[i][j]) { OUTPUT_PAIR(i, j-2, i, j-1); } if (j + 3 < nGridCount && s_color[i][j+3] == s_color[i][j]) { OUTPUT_PAIR(i, j+3, i, j+2); } } } // x x | x // x | x x 这些情况的处理 for (int j = 0; j < nGridCount - 2; j++) { if (s_color[i][j] == s_color[i][j+2]) { if (i - 1 >= 0 && s_color[i][j] == s_color[i-1][j+1]) { OUTPUT_PAIR(i, j+1, i-1, j+1); } if (i + 1 < nGridCount && s_color[i][j] == s_color[i+1][j+1]) { OUTPUT_PAIR(i, j+1, i+1, j+1); } } } } puts("- - - - - - - - - - "); // 再纵向地看一遍 for (int j = 0; j < nGridCount; j++) { for (int i = 0; i < nGridCount - 1; i++) { // x | x | x | x // x | x | x | x 这些情况的处理 // x | x | x | x if ( s_color[i][j] == s_color[i+1][j]) { // x // x 检查后端这两个点 // ? ? if (j - 1 >= 0 && i + 2 < nGridCount && s_color[i+2][j-1] == s_color[i][j]) { OUTPUT_PAIR(i+2, j, i+2, j-1); } if (j + 1 < nGridCount && i + 2 < nGridCount && s_color[i+2][j+1] == s_color[i][j]) { OUTPUT_PAIR(i+2, j, i+2, j+1); } // ? ? // x 检查前端这两个点 // x if (j - 1 >= 0 && i - 1 >= 0 && s_color[i-1][j-1] == s_color[i][j]) { OUTPUT_PAIR(i-1, j, i-1, j-1); } if (j + 1 < nGridCount && i - 1 >= 0 && s_color[i-1][j+1] == s_color[i][j]) { OUTPUT_PAIR(i-1, j, i-1, j+1); } // ? xx ? 检查这两个点 if (i - 2 >= 0 && s_color[i-2][j] == s_color[i][j]) { OUTPUT_PAIR(i-2, j, i-1, j); } if (i + 3 < nGridCount && s_color[i+3][j] == s_color[i][j]) { OUTPUT_PAIR(i+3, j, i+2, j); } } } // x | x // x | x 这些情况的处理 // x | x for (int i = 0; i < nGridCount - 2; i++) { if (s_color[i][j] == s_color[i+2][j]) { if (j - 1 >= 0 && s_color[i][j] == s_color[i+1][j-1]) { OUTPUT_PAIR(i+1, j, i+1, j-1); } if (j + 1 < nGridCount && s_color[i][j] == s_color[i+1][j+1]) { OUTPUT_PAIR(i+1, j, i+1, j+1); } } } } cin >> ws; }