• 基于数组的自定义数据结构1-图路径与编号二维数组


    在有限的二维数组范围内按行按列对每一个元素位置进行编号,此时对于编号cnt我们可以以此为bridge建立关系,方便查找:

    示例代码如下:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 const int maxn = 100;
     6 const int dx[]={0,0,1,-1};
     7 const int dy[]={1,-1,0,0};
     8 
     9 int mapper[maxn][maxn];
    10 bool dir[maxn*maxn+5][4];//第一维度:编号,第二维度:方向编号 
    11 int id[maxn][maxn];//编号与二维坐标的对应
    12 
    13 /*上方的对应是由坐标对应到编号,在查找时,由编号找坐标并不容易
    14 根据需求不同,由编号找坐标的方式可以写成:
    15 int idx[maxn];//idx[编号]=x坐标
    16 int idy[maxn];//idy[编号]=y坐标
    17 */ 
    18 
    19 int r,c;
    20 
    21 int initial_dir() 
    22 {
    23     int cnt=0;
    24     for(int i=0;i<r;++i) for(int k=0;k<c;++k)
    25     {
    26         id[i][k]=cnt;
    27         for(int d=0;d<4;++d)
    28         {
    29             int newx = i+dx[d];
    30             int newy = k+dy[d];
    31             if(newx>=0&&newx<r&&newy>=0&&newy<c && mapper[newx][newy])dir[cnt][d]=true;
    32             else dir[cnt][d]=false;
    33         }
    34         cnt++;
    35     }
    36     return cnt;//返回总点数 
    37 }
    38 
    39 int readin()
    40 {
    41     cin>>r>>c;
    42     for(int i=0;i<r;++i) for(int k=0;k<c;++k)
    43     {
    44         cin>>mapper[i][k];//0不可行,1可行 
    45     }
    46     return 0;
    47 }
    48 
    49 int main()
    50 {
    51     ios::sync_with_stdio(false);
    52     readin();
    53     initial_dir();
    54     return 0;
    55 }

    OK//某种意义上说这是空间换时间

  • 相关阅读:
    Maven属性
    安居客Android项目架构演进
    HttpClient 解说 (1) 基础
    linux 打包和压缩文件
    java AES-256加解密解决方法
    jdk8 分隔字符串最新方法
    springboot 过滤器,拦截器,切片的运用
    thinkphp 5.0手记
    如何使用UDP进行跨网段广播
    php multicast多播实现详解
  • 原文地址:https://www.cnblogs.com/savennist/p/12362159.html
Copyright © 2020-2023  润新知