扫雷的算法思考.

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

14ExpandedBlockEnd.gif            }

思考,当100个位置中放入80个雷的时候很慢,因为到后期的几颗雷会总是早到重复的雷.
为了解决这个问题,讨论了下,得出以下结果:
先写一个函数用来把所有的雷顺序填充到数组中,然后进行随机找放雷的坐标,将第一颗雷的坐标和这个坐标互换,依次类推.

有鸡蛋就扔吧..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值