C高手进,关于节约内存空间

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:23:45
在推箱子游戏中,有没有一种方法,可以记录地图中已经走过的点,比如说一个箱子的时候,那要记录的是人的横坐标和纵坐标,还有箱子的横坐标和纵坐标,使走过的状态不重复,我现在用的是一个四维数组m[][][][],但是如果是两个箱子,三个箱子的时候,这种方法就显的不那么好了,不知道有没有一种方法,可以记录地图的状态,即不用那么浪费空间,也不用那么浪费时间?
原来的地图是个二维数组,每一个状态是一个结构体类型的变量

一般用位图记录。比如8*8地图,记录人的状态,char man_pos[8];总共8B,也就是8*8bit,每一位代表一个坐标,就可以了。坐标(0,0)就是第1位,(3,4)就是3*8+4位

地图整个表示为一个2维数组
记录各点的状态值就好了,譬如a[0][0] = 0/1,表示此处有/无箱子

sgdf