当前位置:   article > 正文

【Windows程序设计】扫雷递归展开空白_扫雷翻空白格子怎么写知乎

扫雷翻空白格子怎么写知乎

采用深搜递归来展开空白

最重要的是递归出口的条件:1.越界 2.非0。

注意:搜索过的要标记。

数组解释:

fstate[m][n]是m行n列的状态

flag[m][n]用来表示m行n列是否被搜索过,搜索过则标记为1

ShowBlock函数显示该方块

  1. void Expand(HDC hdc,int (*fstate)[WIDTH],int (*flag)[WIDTH],int m,int n)
  2. {
  3. if(m<0 || m>=HEIGHT || n<0 || n>=WIDTH)//越界
  4. return;
  5. if(fstate[m][n]!=ISLEI && flag[m][n]==0)//不是雷就显示该方块并标记
  6. {
  7. flag[m][n] = 1;
  8. ShowBlock(hdc,fstate,m,n);
  9. if(fstate[m][n] == 0)//是0则递归展开
  10. {
  11. Expand(hdc,fstate,flag,m-1,n-1);
  12. Expand(hdc,fstate,flag,m-1,n);
  13. Expand(hdc,fstate,flag,m-1,n+1);
  14. Expand(hdc,fstate,flag,m,n-1);
  15. Expand(hdc,fstate,flag,m,n+1);
  16. Expand(hdc,fstate,flag,m+1,n-1);
  17. Expand(hdc,fstate,flag,m+1,n);
  18. Expand(hdc,fstate,flag,m+1,n+1);
  19. }
  20. }
  21. flag[m][n] = 1;
  22. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/748877
推荐阅读
相关标签
  

闽ICP备14008679号