zoukankan      html  css  js  c++  java
  • c++实现蛇形矩阵总结

    蛇形矩阵,百度了一下,是这么一个东西:

    像一条蛇一样依次递增。

    我想,竟然做了螺旋矩阵,那做一下这个吧。在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋要难。

    我的思路是这样的,先输出左边的矩阵(包括对角线),再输出左边的矩阵(不包括对角线)。

    看上图,因为我是一条对角线一条对角线这样赋值的,所以左边矩阵应该要赋值 n次,右边是n-1次。

    而外层循环的次数是偶数的时候,也就是这样:

    上图的1,然后是:4->5->6,然后是:11->12->13->14->15这些是从上往下递增,然后奇数的循环是从下往上地址。基于这个很快就可以写出程序了,代码是这样的:

    #include <iostream>
    
    using namespace std;
    
    
    void snakeLikeMat(int **a, int n)
    {
        int num = 1;
        int total = n*n;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j <= i; j++)
            {
                if (i % 2 == 0)
                {
                    a[j][i - j] = num++;
                }
                else
                {
                    a[i - j][j] = num++;
                }
            }
            
        }
        for (int i = 0; i < n-1; i++)
        {
            for (int j = 0; j <= i; j++)
            {
                if (i%2==0)
                {
                    a[n - 1 - j][n - 1 - i + j] = total--;
                }
                else
                {
                    a[n - 1 - i + j][n - 1 - j] = total--;
                }
            }
        }
    }
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        
        int ha = 0;
        cin >> ha;
        int **a = new int*[ha];
        for (int i = 0; i < ha; i++)
        {
            a[i] = new int[ha];
        }
        snakeLikeMat(a, ha);
        for (int i = 0; i < ha; i++)
        {
            for (int j = 0; j < ha; j++)
            {
                cout << a[i][j] << "	";
            }
            cout << endl;
        }
        for (int i = 0; i < ha; i++)
        {
            delete [] a[i];
        }
        delete[] a;
        return 0;
    }

    两个外层for循环分别是左矩阵和右矩阵。运行结果,取什么呢

    1,3,8吧

    1:

    3:

    8:

    哈哈,见笑了。

  • 相关阅读:
    如何在CentOS 7中安装最新Git(源码安装)
    centos7安装Lua
    syslog-ng 学习
    syslog-ng内容讲解
    java框架篇---spring IOC 实现原理
    java 过滤器filter使用案例
    jsp-TagLib标签库
    阿里服务器+Centos7.4+Tomcat+JDK部署
    IntelliJ IDEA上创建maven Spring MVC项目
    ServiceStack.Redis之IRedisClient
  • 原文地址:https://www.cnblogs.com/wuweixin/p/5355305.html
Copyright © 2011-2022 走看看