//一个模拟题,按题意搞就可以了,贴个代码:
#include<stdio.h> #include<string.h> int n; char mat[60][60]; int judge(int a,int b) { int i; if(mat[a][b]!='#')return 0; for(i=1;;i++) { if(b-i<0&&b+i>=n) break; else if(b-i<0) { if(mat[a][b+i]!='o') return 0; else break; } else if(b+i>=n) { if(mat[a][b-i]!='o') return 0; else break; } else { if(mat[a][b+i]!=mat[a][b-i]) return 0; else if(mat[a][b+i]=='#'&&mat[a][b-i]=='#') { if(a+1<n&&mat[a+1][b+i]=='#') return 0; else if(a-1>=0&&mat[a-1][b+i]=='#') return 0; else if(a+1<n&&mat[a+1][b-i]=='#') return 0; else if(a-1>=0&&mat[a-1][b-i]=='#') return 0; } else{ if(i>1) break; else return 0; } } } for(i=1;;i++) { if(a-i<0&&a+i>=n) break; else if(a-i<0) { if(mat[a+i][b]=='o') break; else return 0; } else if(a+i>=n) { if(mat[a-i][b]=='o') break; else{ return 0; } } else { if(mat[a+i][b]!=mat[a-i][b]) return 0; else if(mat[a+i][b]=='#'&&mat[a-i][b]=='#') { if(b+1<n&&mat[a+i][b+1]=='#') return 0; else if(b-1>=0&&mat[a+i][b-1]=='#') return 0; else if(b+1<n&&mat[a-i][b+1]=='#') return 0; else if(b-1>=0&&mat[a-i][b-1]=='#') return 0; } else{ if(i>1) break; else return 0; } } } return 1; } int main() { int i,j,sum; while(scanf("%d",&n),n) { sum=0; for(i=0;i<n;i++) scanf("%s",mat[i]); for(i=1;i<n-1;i++) for(j=1;j<n-1;j++) if(judge(i,j)) sum++; printf("%d\n",sum); } return 0; }