扫雷的算法思考.
文章是老方法的思考,不是新方法.
看了篇扫雷的程序,看到初始化雷的时候,发现了点问题.代码如下:
看了篇扫雷的程序,看到初始化雷的时候,发现了点问题.代码如下:
1
int count = 0;
2
Random r = new Random((int)DateTime.Now.Ticks);
3
4
while (count < _mines)
5
{
6
int row = r.Next(0, _rows);
7
int col = r.Next(0, _cols);
8
9
if (!_board[row, col].IsMine)
10
{
11
_board[row, col].IsMine = true;
12
count++;
13
}
14
}
int count = 0;2
Random r = new Random((int)DateTime.Now.Ticks);3

4
while (count < _mines)5
{6
int row = r.Next(0, _rows);7
int col = r.Next(0, _cols);8

9
if (!_board[row, col].IsMine)10
{11
_board[row, col].IsMine = true;12
count++;13
}14
}思考,当100个位置中放入80个雷的时候很慢,因为到后期的几颗雷会总是早到重复的雷.
为了解决这个问题,讨论了下,得出以下结果:
先写一个函数用来把所有的雷顺序填充到数组中,然后进行随机找放雷的坐标,将第一颗雷的坐标和这个坐标互换,依次类推.
有鸡蛋就扔吧..

浙公网安备 33010602011771号