一开始看二维矩阵转为一维数组的时候还是有点懵的,为啥是N(N+1)/2呢,为啥不是N*N/2呢,这个矩阵明明是N*N的一个正方形啊,我要省一半空间直接除2不就行了,带着这个问题我观察了一下这个PPT里的图片
可以看到,如果我们要包含v2及以上的三角形的时候,我们会有1+2+3个数据,也就是结点数3(这个二维矩阵是从v0开始的,v2也就是第三个节点了)的一维数组要有6个空间来储存这三个结点间的关系(包括结点本身),那么显然,N*N/2就不能提供足够的空间来储存这种关系。
如果我们把每个0,1当成一单位的面积,那么原先N*N/2的三角形的面积总会装不下我们所要的关系(也就是0,1)的面积,画成图就是这样:
只有用N*(N+1)的长方形切出来的三角形的面积才能装得下我们所需的0和1的面积。