Tip | 蛇形矩阵

作者: 凌川江雪 | 来源:发表于2019-05-07 22:54 被阅读5次

    输入一个数字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一组四个箭头:
    运行结果:

    相关文章

      网友评论

        本文标题:Tip | 蛇形矩阵

        本文链接:https://www.haomeiwen.com/subject/wqvuoqtx.html