这个循环应该怎样修改解决

题目:输入数字n(n<10),输出n层正方形图案。正方形图案最外层是第一层,依次往内,每层用的数字和层数相同。

img

const int M=10;
int floor[M][M];
cout<<"请输入正方形层数:";
cin>>m;
int start=0,end=2*m-2;
for(x=0,y=0,t=0;t<=m/2;x++,y++,start++,end--,t++)
{for(x=start;x<end;x++)
floor[x][y]=t+1;
for(y=start;y<end;y++)
floor[x][y]=t+1;
for(x=end;x>start;x--)
floor[x][y]=t+1;
for(y=end;y>start;y--)
floor[x][y]=t+1;}
for(x=0;x<2*m-1;x++)
    {for(y=0;y<2*m-1;y++)
    cout<<floor[x][y]<<setw(2);
cout<<endl;


img


请看我写的。

#include <iostream>
#include<string>
#include <vector>
using namespace std;
 
//字符串结束以‘\0’为结束符;
 
void printfsquare()
{
    int n,m;
    
    cin >> n;
    m=2 * n - 1;
 
    //动态二维数组
    vector<vector<int>> a (m, vector<int>(m));
 
//动态二维数组的初始化
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < m ; j++)
        {
            a[i][j] = 0;
        }
    }
    int i, j, k;
                               //以一个外部变量 i 既作为数组的值,有作为总控制。
                                 //这样每当 i + 1 时 这样可以使 
                                //数组的行和列都加 1 使得整个数组向里增加一层。
for ( i = 0; i <m; i++)
    {
        for ( j = i; j <m - i; j++)
        {
            for ( k = i ; k <m - i; k++)
            {
                a[j][k] = i+1;
 
            }
        }
    }
 
    for ( i = 0; i < m; i++)
    {
        for ( j = 0; j < m; j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout << endl;
    }    
}
 
 
int main()
{
 
    printfsquare();
    return 0;
}