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 存储为布尔类型
  • 相关阅读:
    TreeList Linq
    MasterDetail Linq
    C# 事务处理
    设计模式——代理模式(Proxy Pattern)
    设计模式——装饰模式(Decorator Pattern)
    C# 调用WCF服务
    加密解密
    Effective C#高效编程(02:常量)
    切换城市功能
    DataPager控件使用
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9423918.html
Copyright © 2011-2022 走看看