zoukankan      html  css  js  c++  java
  • 二维数组的妙用

    数组的妙用

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

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

      • 比如 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 存储为布尔类型
  • 相关阅读:
    sabaki and leelazero
    apply current folder view to all folders
    string operation in powershell
    wirte function in powershell
    add environment path to powershell
    Module in powershell
    sql prompt
    vmware中鼠标在部分区域不能使用
    调整多个控件的dock的顺序
    行为型模型 策略模式
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423918.html
Copyright © 2011-2022 走看看