機試指南第二章-經典入門-排版例題自解

例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;
}
相關文章
相關標籤/搜索