Tip | 蛇形矩阵

2019-05-15 14:20:12 浏览数 (1)

输入一个数字i,需要返回的内容如下:

  • 输入一个数字i,输出结果的矩阵是i行i列的。 矩阵从右上角开始,从1开始往下,每增加1行加1。 到第i行后,再往左,每左一列加1。 到头后再往上、往右、再往下…., 其中已经填上的数字不能覆盖,直接转向, 现要求输入任意元素i,返回矩阵内容;

code(仅供参考):

代码语言:javascript复制
#include <iostream>
using namespace std;

int main(){
    int i;
    cout<<"请输入i:"<<endl;
    cin>>i;
    int out[i][i];
    int count = 1;
    int m = i/2   1 ;
    int xyv = 0;
    

    int n = 0;

    int icount = 1;
    while(icount != m ){
        for (int j= xyv ; j <= i - icount ;   j)
    {
                
        out[j][i - icount] = count;
        count  ;
    }

        for (int y =  i - icount -1; y >= xyv ; --y)
    {
        out[i - icount][y] = count;
        count  ;
    }

        for (int x = i - icount -1; x >= xyv ; --x)
    {
        out[x][xyv] = count;
        count  ;
    }

        for (int ty = icount; ty <= i - icount -1;  ty)
    {
        out[xyv][ty] = count;
        count  ;
    }

       icount  ;
       xyv  ;
    }

    m--;
    if(i%2==1)
    out[m][m] = i*i;

    for(int k0 = 0; k0 < i;   k0)
    {
        for (int k1 = 0; k1 < i;   k1)
        {
            printf("M", out[k0][k1]);
        }
        cout<<endl;
    }
    return 1;
}

思路:一个while一组四个箭头:

运行结果:

  • 优质参考:https://blog.csdn.net/left_coast/article/details/52087136

0 人点赞