<code class="language-cpp">#include <stdio.h> #include <string.h> #include <ctype.h> int n, HV, h[10][10], v[10][10], pro = 1; int main() { while(scanf("%d%d", &n, &HV) == 2 && n) { int nedge, num, nothing = 1; memset(h, 0, sizeof(h)); memset(v, 0, sizeof(v)); while(HV--) { char t; int i,j; t = getchar(); while(!isalpha(t)) t = getchar(); scanf("%d%d", &i, &j); if(t == 'H') h[i][j] = 1; else if(t == 'V') v[j][i] = 1; } printf("Problem #%d\n\n", pro++); for(nedge = n; nedge > 0; nedge--) { int i, j, size = 0; //square平方 num = 0; for(i = 1; i < n; i++) { for(j = 1; j < n; j++) { if(h[i][j] && v[i][j]) { int p = 0, q, number = 2, check = 1; while(number--) // 循环检验4条边 { for(q = 0; q < nedge; q++) //边的边长 { if(!h[i+p][j+q] || !v[i+q][j+p]) check = 0; } p = p + nedge; } if(check) { nothing = 0; size++; } } } } if(size) printf("%d square (s) of size %d\n", nedge, size); } if(nothing) printf("No completed squares can be found.\n"); printf("\n**********************************\n\n"); } return 0;code>