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

Posted savennist

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于数组的自定义数据结构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//某种意义上说这是空间换时间

以上是关于基于数组的自定义数据结构1-图路径与编号二维数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP常用的自定义函数

图类算法总结

C 语言二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )

STM32如何定义16位的数组

python如何定义二维结构体数组?

无向图中求两定点之间所有路径。图用二维数组存储。最好用c语言、给我解题思路也行。谢谢