水题水题~~~
#include <iostream> #include <queue> #include <stack> #include <map> #include <set> #include <bitset> #include <cstdio> #include <algorithm> #include <cstring> #include <climits> #include <cstdlib> #include <cmath> #include <time.h> #define maxn 205 #define maxm 2000005 #define eps 1e-10 #define mod 1000000007 #define INF 0x3f3f3f3f #define PI (acos(-1.0)) #define lowbit(x) (x&(-x)) #define mp make_pair #define ls o<<1 #define rs o<<1 | 1 #define lson o<<1, L, mid #define rson o<<1 | 1, mid+1, R #define pii pair<int, int> //#pragma comment(linker, "/STACK:16777216") typedef long long LL; typedef unsigned long long ULL; //typedef int LL; using namespace std; LL qpow(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base;base=base*base;b/=2;}return res;} LL powmod(LL a, LL b){LL res=1,base=a;while(b){if(b%2)res=res*base%mod;base=base*base%mod;b/=2;}return res;} // head char s[105][105]; int g[105][105]; int c[30]; int n, ans; void read(void) { scanf("%d", &n); for(int i = 1; i <= n; i++) scanf("%s", s[i]+1); for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) { if(s[i][j] >= 'a' && s[i][j] <= 'z') g[i][j] = s[i][j] - 'a'; if(s[i][j] == '.') g[i][j] = 26; if(s[i][j] == '#') g[i][j] = 27; } } void solve(int x, int y) { memset(c, 0, sizeof c); c[g[x][y]]++; c[g[n - x + 1][y]]++; c[g[n - y + 1][x]]++; c[g[n - y + 1][n - x + 1]]++; c[g[n - x + 1][n - y + 1]]++; c[g[x][n - y + 1]]++; c[g[y][n - x + 1]]++; c[g[y][x]]++; int mx = 0, pos; for(int i = 0; i <= 27; i++) if(c[i] > mx) mx = c[i], pos = i; if(g[x][y] != pos) g[x][y] = pos, ans++; if(g[n - x + 1][y] != pos) g[n - x + 1][y] = pos, ans++; if(g[n - y + 1][x] != pos) g[n - y + 1][x] = pos, ans++; if(g[n - y + 1][n - x + 1] != pos) g[n - y + 1][n - x + 1] = pos, ans++; if(g[n - x + 1][n - y + 1] != pos) g[n - x + 1][n - y + 1] = pos, ans++; if(g[x][n - y + 1] != pos) g[x][n - y + 1] = pos, ans++; if(g[y][n - x + 1] != pos) g[y][n - x + 1] = pos, ans++; if(g[y][x] != pos) g[y][x] = pos, ans++; } void work(void) { ans = 0; for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++) solve(i, j); printf("%d\n", ans); } int main(void) { int _; while(scanf("%d", &_)!=EOF) { while(_--) { read(); work(); } } return 0; }