AcWing 754平方矩阵

题目描述:

输入整数N,输出一个N阶的二维数组。

数组的形式参照样例。

输入格式

输入包含多行,每行包含一个整数N。

当输入行为N=0时,表示输入结束,且该行无需作任何处理。

输出格式

对于每个输入整数N,输出一个满足要求的N阶二维数组。

每个数组占N行,每行包含N个用空格隔开的整数。

每个数组输出完毕后,输出一个空行。

数据范围

0≤N≤1000≤N≤100

输入样例:

1
2
3
4
5
0

输出样例:

1

1 2
2 1

1 2 3
2 1 2
3 2 1

1 2 3 4
2 1 2 3
3 2 1 2
4 3 2 1

1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1

 观察样例发现,从左到右的斜对角线上的数字是对称的,且从左斜对角线往右上方为1,2,3,。。。等

#include <iostream>
#include <cstdio>

using namespace std;
const int MAX = 109;

int n;
int a[MAX][MAX];

int main()
{
    while(scanf("%d", &n))
    {
        if(n == 0)
            break;

        int m = n - 1;

        for(int i = 0; i < n; i++)
            a[i][i] = 1;

        int cou = 2;

        while(m -- )
        {
            for(int i = 0; i < n - cou + 1; i ++)
            {
                int row = i + cou - 1;
                int col = i;
                a[row][col] = a[col][row] = cou;
                //printf("row = %d  col = %d  cou = %d a = %d\n", row, col, cou, a[row][col]);
            }
            cou++;
        }

        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < n; j++)
                printf("%d ", a[i][j]);
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_44620183/article/details/113441531