例2.8 疊筐ios
解題思路spa
這題的思路頗有啓發性,先排版後輸出,及時阻止了我動規。code
AC代碼blog
#include<cstdio> #include<iostream> using namespace std; int m[82][82]; char a, b; int n; int main() { bool flag = true; while (scanf("%d %c %c", &n, &a, &b) != EOF) { if (flag)flag = false; else printf("\n"); for (int i = 1, j = 1; i <= n; i += 2, j++)//從裏到外輸出每一個圈,i是各圈邊長,j是圈數 { int x = n / 2 + 1, y = x;//中心點 x -= j - 1; y -= j - 1;//各圈左上角點座標 char c = j % 2 == 1 ? a : b;//各圈字符 for (int k = 1; k <= i; k++)//對當前圈賦值 { m[x + k - 1][y] = c; m[x][y + k - 1] = c; m[x + i - 1][y + k - 1] = c; m[x + k - 1][y + i - 1] = c; } } if (n != 1) { m[1][1] = ' '; m[n][1] = ' '; m[1][n] = ' '; m[n][n] = ' '; } for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { printf("%c", m[i][j]); } printf("\n"); } } //system("pause"); return 0; }