題意:給出一個n*n的圖,問這個圖是否能由十字架拼成(3 ≤ n ≤ 100)。
——>>最上面一行的#,一定是一個十字架的頭部,判斷該頭部是否符合要求即可。
#includeusing namespace std; const int maxn = 100 + 10; char G[maxn][maxn]; int main() { int n; while(scanf(%d, &n) == 1) { int sum = 0; for(int i = 0; i < n; i++) { getchar(); for(int j = 0; j < n; j++) { G[i][j] = getchar(); if(G[i][j] == '#') sum++; } } bool ok = true; if(sum % 5) ok = false; if(ok) { for(int i = 0; i < n; i++) { if(!ok) break; for(int j = 0; j < n; j++) if(G[i][j] == '#') { if(!j || j == n-1 || i > n-3 || G[i+1][j] != '#' || G[i+1][j-1] != '#' || G[i+1][j+1] != '#' || G[i+2][j] != '#') { ok = false; break; } G[i+1][j] = G[i+1][j-1] = G[i+1][j+1] = G[i+2][j] = '.'; } } } ok ? puts(YES) : puts(NO); } return 0; }