C++学习笔记day10-----标准C语言之数组的活用

之所以单独的记录这个,是因为我觉得这个是个很有用的数组应用手段。

我在用C语言做扫雷和俄罗斯方块的时候都有用到,比较方便。最重要的是,这种运用数组的手段不仅仅可以用于数组。

问题:

当我在处理扫雷里踩到空位置的问题时,我要从当前的位置去遍历上下左右里的空格都是什么状态,是墙还是数字,还是地雷,或者还是空白。

当然可以很直接的用 if-else 的方式去解决它,这样做,代码会很多,且都是重复代码,由于判断条件不同,却又不能整合。


我知道我当前的位置,如果我知道我下一步的位置,那么无论这个下一步是在哪里,我只要对下一步进行判断即可(墙?数字?地雷?空白?)

显然这个下一步从固定位置变成了一个变量位置,我不关心它具体在哪里,我只关心怎么处理我拿到的下一步。

那么怎么样才能把这个下一步变成一个变量一样单独抽出来呢?

由于从当前位置到下一步是有固定规律的,我只能走上下左右,对于数组类型组成的地图来说,无论在哪个位置,向上就是把横坐标 -1 ,由此类推,四个方向的走法都是可以预知的,然后我把我当前的位置和我下一步的方向进行累加,就会得到我的下一步。变成这个样子之后,当前位置是固定的,但是方向可以选择,那么产生的下一步也就是不一样的。最后,把四个方向放到一个小的二维数组中,采用for循环就可以处理完四个方向。在for循环的代码块,我只要写一次对下一步位置的处理即可。

如此一来,就可以省下很多行代码。这个是比较有用的,比起写4组if-else语句要高明的多。


把这个问题抽象出来,类似于这种问题,知道当前状态的,去往下一个状态的过程又是规律性极强的,那么就可以用循环的语句来代替繁琐的 if-else。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值