问题描述:对于任意一个大于等于4的整数n,可得到如下一个nxn的回形数字矩阵

1   1   1   1 

1   2   2   1

1   2   2   1

1   1   1   1

每一圈的数字都一样,往内层走,数字变大。

输入:一个整数n

输出:一个nxn数字矩阵

求解方法:

思路一:这是一个对称形,上下对称,左右对称,所以,我们只需要找到四分之一的形状,其他的用对称性就可以得到。我们不妨把这个回形矩阵分成左上、右上、左下、右下四个部分。

左上部分实际上是取行数和列数的最小值,所以这个问题就变得简单了。

程序代码如下:

#include<iostream>
using namespace std;
int a[100][100];
int main(){
    int n,m;
    cin>>n>>m; 
    for(int i=1;i<=(n+1)/2;i++)
        for(int j=1;j<=(m+1)/2;j++)
        {
            a[i][j]=i<j?i:j;
            a[n+1-i][j]=a[i][j];
            a[i][m+1-j]=a[i][j];
            a[n+1-i][m+1-j]=a[i][j];
        }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-28
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-17
相关资源
相似解决方案