扫雷中布雷的算法

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:03:19
把算法仔细的说下
如果就这么随机布雷会不会出现这种情况啊一个3×3的格子里都是雷,第3位能具体说点怎么把然后把格子的坐标和二维数组关联起来 我是JP菜鸟

首先,你要先定义一个n*n的二维数组,该数组的i-1到i+1,j-1到j+1除去i,j本身。值为周围有几个雷。如果该数组的值为10则本身是雷。
接着,你自动生成m个雷,让这m个雷分布在界面上。被选中的值i,j点的值为10,从i-1到i+1,从j-1到j+1的值都+1;
第三,在界面上想办法区分出n*n个格子,然后把格子的坐标和二维数组关联起来

先来一个二维数组。然后取随机数。当然要1或0的随机数了。如果是1的话就弄成雷。想弄几个就弄几个。你可以设定。然后再根据数组的值来判断了。0的地方就得写上数字了。比如arr[a][b]的地方不是雷的话。就得判断
arr[a-1][b],arr[a][b-1],arr[a-1][b-1],arr[a-1][b-1],arr[a-1][b+1],arr[a-+1][b],arr[a+1][b+1],arr[a+1][b-1],这八个值。根据这八个值中有几个1来判断arr[a][b]地方写数字几了。当然还要考虑在边上的问题。也简单。我想你应该会了吧。
没有关系的了。有可能像你说的那种情况。你先做完以后可以再考虎那个情况。就是布雷的时候还得考虑一下了。比如在arr[a][b]布雷的时候得判断他周转的是不是全是雷。具体的位置你当然可以自己考虎了。

你指的是电脑里的小游戏扫雷吗?
你点开个方格如果空白就说明边上没有雷,点开有数字数字多少就说明贴着这格的边上9格里有几个雷