Time Limit: 3 second
Memory Limit: 2 MB

设计程序,当用户键入n,输出题意规定的n*n矩阵。
例如,用户输入n的值为9,则输出:
999999999
988888889
987777789
987666789
987656789
987666789
987777789
988888889
999999999

Input

输入文件仅一行,输入n(1≤n≤9)。

Output

输出矩阵。(最后用换行结束)

Sample Input

4

Sample Output

4444
4334
4334
4444

【题解】

注意一圈一圈往内外围的数字逐渐递减,然后模拟一下等于9时如何处理,很容易找到规律,把9改成一个变量就可以了。

【代码】

#include <cstdio>

const int MAXN = 9;

int n,a[MAXN+2][MAXN+2];

void input_data()
{
    scanf("%d",&n);
}

void get_ans()
{
    for (int i = n;i >= ((n/2)+1);i--) //这里i的下界就是整个矩阵中出现的最小数。
        {
            for (int j = 1+n-i;j <= i;j++) //这里的规律要先模拟一下才能找出来。 取n=9是比较好的选择。
                {
                    a[1+n-i][j] = i;
                    a[j][1+n-i] = i;
                    a[i][j] = i;
                    a[j][i] = i;
                }
        }
    for (int i = 1;i <=n;i++)
    {
        for (int j = 1;j <= n;j++)
            printf("%d",a[i][j]);
        printf("\n");
    }


}

int main()
{
    input_data();
    get_ans();
    return 0;
}

 

版权声明:本文为AWCXV原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/AWCXV/p/7632479.html