美文网首页
蛇形矩阵 输出

蛇形矩阵 输出

作者: AlwaysFrank | 来源:发表于2016-09-01 23:04 被阅读0次

    有的时候零零碎碎的东西太多,总归是需要找个地方来记录一下。大神们有个Git、CSDN,我就先在这里水一下吧,就只当像云笔记一样偶尔记录一下生活吧。

    今天做了一道题。。。

    根据输入的数据N,需要输出一个蛇形矩阵(N*N)。

    5
    1 2 3 4 5
    16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9

    第一行的数据是矩阵的行列数(相等),矩阵应该是上图所示的样子。

    对于这样的输出,我们还是要把规律找出来,按照从左到右从上到下,把每一个数按照矩阵最外侧向最内侧填满即可。

    P.S.如有更好的方法欢迎大家留言。

    # include <iostream>
    using namespace std;
    int main()
    {
        int srow,erow,scol,ecol,n;//s e 分别表示是开始还是结束
        cin>>n;
        int counter=1;
        int** matrix = new int*[n];
        for(int i=0; i<n; ++i)
        {
            matrix[i]=new int [n];
        }
        srow=0;
        erow=n-1;
        scol=0;
        ecol=n-1;
        while(counter<=n*n)//判断是否生成完毕
        {
           //首行
            for(int i=scol; i<=ecol; i++)
            {
                matrix[srow][i]=counter++;
            }
            srow++;
            //最右列
            for(int i=srow; i<=erow; i++)
            {
                matrix[i][ecol]=counter++;
            }
            ecol--;
            //末行
            for(int i=ecol; i>=scol; i--)
            {
                matrix[erow][i]=counter++;
            }
            erow--;
            //最左列
            for(int i=erow; i>=srow; i--)
            {
                matrix[i][scol]=counter++;
            }
            scol++;
        }
        //输出
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; ++j)
            {
                cout<<matrix[i][j]<<"\t";
            }
            cout<<endl;
        }
    }
    
    

    程序结果在CodeBlocks16.01 中运行通过


    Paste_Image.png

    相关文章

      网友评论

          本文标题:蛇形矩阵 输出

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