• 二维数组的妙用


    数组的妙用

    二维数组的本质上仍然为一段连续的线性空间,和一维数组相同,根据下标进行访问时,仍然是常数时间。

    • 有些看似是二维的形式,其实稍作思考,还是一维的,只是为了展示的方便,

      • 比如 4*4 的 16 个时钟,它们各自指向不同的时刻,我们的工作是让其做到时钟同步,因此一个一维数组(向量,vector<int> clocks;),轻松解决问题;
    • 二维的二值图像显然需要使用二维数组进行存储;

    0. 基础

    • 二维数组,可以用来刻画图中结点和边的关系,也即图的邻接矩阵法;
    • 二维布尔数组(值只取 0/1),用来刻画结点之间是否存在某种定性的关系;

      bool areFriends[10][10];
                              // 10 人之间的朋友关系,显然是对称的
    • 旅行商问题:两城市间的距离

      double dist[MAX][MAX];

    1. 高级

    4*4 一共 16 个时钟,时钟上的时间各不相同,现在要通过操做 10 个开关,使其时间一致。已知,开关对时钟的控制关系如下:

    • 0:0、1、2;
    • 1:3、7、9、11
    • 2:4、10、14、15;
    • 3:0、4、5、6、7
    • 4:6、7、8、10、12;
    • 5:0、2、14、15
    • 6:3、14、15;
    • 7:4、5、7、14、15
    • 8:1、2、3、4、5;
    • 9:3、4、5、9、13

    也即此时,开关对时钟的控制,长度也是不一的。但,时钟的数目是固定的,开关的数目也是固定的:

    const int SWITCHES = 10, CLOCKS = 16;
    const char linked[SWITCHES][CLOCKS] = {
        "xxx.............",
        "...x...x.x.x.....",
        ....
        "...xxx...x...x.."
    }
                                                // 当然也可以使用 0/1 存储为布尔类型
  • 相关阅读:
    sql 导出大数据量 到excel
    完美输出textarea样式(换行,空格)
    Caliburn.Micro tips
    客户端向服务器提交数据,表单形式
    sevlet生命周期
    Intent(简单介绍)
    return常用用法
    Activity的生命周期
    android.util.AndroidRuntimeException: requestFeature() must be called before adding content
    ListView点击事件不响应。
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423919.html
Copyright © 2020-2023  润新知