2048游戏的矩阵运算
发布时间
阅读量:
阅读量
题目
1、当手指沿某一方向进行滑动操作时,所有方格将随之朝该方向移动。
2、若两个数值相同的方格发生碰撞,其数值将合并相加。
输入说明:
1、输入数据为一个3 * 3的二维数组。
2、随后输入一个范围在1至4之间的整数,其中1代表向上移动,2代表向下移动,3代表向左移动,4代表向右移动。
输出说明:
最终需输出经过操作后的矩阵状态。
分析
本题主要考察对二维数组的处理能力,涉及四种不同的操作类型,需要对遍历数组的方式进行明确区分。在处理过程中需特别注意,整个数组在滑动过程中会发生位移,若存在数值为0的元素,则会被填充或覆盖;同时,相同数值的元素将被合并,若合并后的结果与后续元素相同,则会继续进行合并。针对合并与移动操作的实现方式,我采用了一个列表来存储某一维度中非零的数据,在此基础上对列表执行删除或添加的操作,并忽略所有值为0的元素。完成操作后,再将处理后的数据重新赋给原数组(别忘了补零)。四种操作之间存在一定的相似性,关键在于合理控制i和j(此处i和j表示遍历二维数组时所使用的下标)的顺序以及移动的方向。
代码实现(Java)
import java.util.ArrayList;
import java.util.Scanner;
public class Main{
全部评论 (0)
还没有任何评论哟~
