您的当前位置:首页正文

Tip | 蛇形矩阵

来源:要发发知识网

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

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

code(仅供参考):

#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("%4d", out[k0][k1]);
        }
        cout<<endl;
    }
    return 1;
}
思路:一个while一组四个箭头:
运行结果:
  • 优质参考: