2048游戏矩阵操作算法

2023-11-20

题目

1、手指向一个方向滑动,所有格子会向那个方向运动。
2、相同数字的两个格子,相撞时数字会相加。
输入描述:
1、输入为一个3 * 3的矩阵。
2、接下来输入一个1~4的数字。1表示向上滑动,2表示向下划动,3表示向左滑动,4表示向右滑动。
输出描述:
输出操作后的矩阵。

分析

这题考查的是对二维数组的操作,操作有四种类型,需要对遍历数组的方式进行区分。需要注意的地方有,整个数组会在滑动中移动,如果存在0则会被填充和覆盖,另外,相同的数字也会合并,如果合并后和后面的数组相同,则会继续合并。在处理这合并和移动操作时,我采用的方式是用一个列表来保存数组某一维中的非0数据,接下来对列表执行删除或添加数据的操作,忽略那些为0的值,操作结束之后再向数组中赋值(别忘记补0)。四种操作有相似性,关键是控制好i和j (i和j这里表示遍历二维数组的下标)的顺序以及前移的方向。

代码实现(Java)

import java.util.ArrayList;
import java.util.Scanner;

public class Main{
   

    static ArrayList<String> list = new ArrayList<>();

    public static void main(String[] args) {
   
        Scanner sc = new Scanner(System.in);
        int[][] x = new int[3][3];
        for(int j = 0; j < 3; j++) {
   
            for(int i = 0; i < 3; i++) {
   
                x[i][j] = sc.nextInt();
            }
        }
        int a = sc.nextInt();
        find(x, a);
        for(int j = 0; j < 3; j++) {
   
            for (int i = 0; i < 3; i++) {
   
                System.out.print(x[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static void find(int[][] x, int a) {
   
        switch (a) {
   
            case 1:
                for(int i = 0; i < 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2048游戏矩阵操作算法 的相关文章

  • Python全栈开发【基础-03】编程语言的分类

    专栏介绍 本专栏为Python全栈开发系列文章 技术包括Python基础 函数 文件 面向对象 网络编程 并发编程 MySQL数据库 HTML JavaScript CSS JQuery bootstrap WSGI Django Flas
  • 阿里巴巴都害怕的区块链电商到底是什么?

    近日 区块链权威机构中国通信工业协会区块链专业委员会 CCIAPCB 发出倡议 联合各界将中共中央政治局10月24日集体学习区块链主席讲话日作为 区块链中国日 此次中央将区块链技术放在了国家战略层面高度上 让区块链一时间成了全民热点 特别是
  • 【python数据挖掘课程】二十七.基于SVM分类器的红酒数据分析

    这是 Python数据挖掘课程 系列文章 前面很多文章都讲解了分类 聚类算法 这篇文章主要讲解SVM分类算法 同时讲解如何读取TXT文件数据并进行数据分析及评价的过程 文章比较基础 希望对你有所帮助 提供些思路 也是自己教学的内容 推荐大家
  • TS装饰器

    一 定义 装饰器本质是一种函数 通过添加标注的方式 对数据 类 方法 属性 参数等 的功能进行增加或者修改 二 使用 准备工作 ts config json文件中 1 基础使用 装饰器名字 例子 function test target a
  • 《塞尔达传说:旷野之息》中设计元素的分析

    塞尔达传说 旷野之息 中设计元素的分析 0 写在前面 关于 塞尔达传说 旷野之息 是否属于中型游戏 检索许多资料后 有一种通识是 塞尔达传说 旷野之息 不属于3A级别游戏 显然也不属于小型游戏 因此我姑且认为它属于中型游戏 这也符合此篇的初
  • crypto-js md5加密和解密

    直接上代码 import CryptoJS from crypto js const encodeFactor zq87dopenf67eg 加密 export function encrypt txt var key CryptoJS e

随机推荐

  • 服务攻防-中间件安全&CVE复现&IIS&Apache&Tomcat&Nginx漏洞复现

    目录 一 导图 二 ISS漏洞 中间件介绍 gt 1 短文件 2 文件解析 3 HTTP SYS 4 cve 2017 7269 三 Nignx漏洞 中间件介绍 gt 1 后缀解析漏洞 2 cve 2013 4547 3 cve 2021
  • openstack平台搭建笔记(容器云)

    openstack平台搭建笔记 容器云 一 根据要求准备好配置环境 节点IP 角色 备注 192 168 100 30 Master Kubernetes 集群 master 节点 Harbor 仓库节点 192 168 100 31 Wo
  • C# 快速写入日志 不卡线程 生产者 消费者模式

    有这样一种场景需求 就是某个方法 对耗时要求很高 但是又要记录日志到数据库便于分析 由于访问数据库基本都要几十毫秒 可在方法里写入BlockingCollection 由另外的线程写入数据库 可以看到 在我的机子上面 1ms写入了43条日志
  • html5 自动化测试工具,五大最佳自动化测试工具

    对更快交付高质量软件 或 快速质量 的需求要求组织以敏捷 持续集成 CI 和DevOps方法论来寻找解决方案 测试自动化是这些方面的重要组成部分 最新的 2018 2019年世界质量报告 表明 测试自动化是实现 快速质量 的最大瓶颈 因为它
  • 四位数显表头设计

    去年帮别人定制了一个四位数显小表头 可以用于测量4 20mA或者0 5V 0 10V输出的的各种传感器 可设置显示范围 上下限报警灯 由于后面更改方案 此方案暂时搁置不用 今天来分享一下软硬件的设计过程 1 硬件设计 1 1电源 电源采用一
  • Flink_06_ProcessAPI(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 侧输出流 SideOutput 即分支流 可以用来接收迟到数据 也可
  • SpringBoot实现接口版本控制

    一个系统在上线后会不断迭代更新 需求也会不断变化 有可能接口的参数也会发生变化 如果在原有的参数上直接修改 可能会影响到现有项目的正常运行 这时我们就需要设置不同的版本 这样即使参数发生变化 由于老版本没有变化 因此不会影响上线系统的运行
  • python的UnboundLocalError: local variable 'xxx' referenced before assignment

    From http blog sina com cn s blog 8d3652760101d01p html 一 意思 本地变量xxx引用前没定义 二 错误原因 在于python没有变量的声明 所以它通过一个简单的规则找出变量的范围 如果
  • OPENV接收和发送串口的数据

    import sensor image time from pyb import UART from pyb import Pin Timer LED import re sensor reset sensor set pixformat
  • qt 开发遇到的坑

    1 QString的toString 和toWString 引起的win32位release 下std string的析构崩溃 代码 QString qs std string str qs toStdString const wchar
  • Linux NFS说明,配置及故障分析

    一 NFS服务简介 NFS 是Network File System的缩写 即网络文件系统 一种使用于分散式文件系统的协定 由Sun公司开发 于1984年向外公布 功能是通过网络让不同的机器 不同的操作系统能够彼此分享个别的数据 让应用程序
  • MATLAB:figure的用法

    figure的定义 figure 创建图窗窗口 可以理解为创建一个有画板的窗口 我们在这块画板上绘制 plot 曲线等 figure主要是创建图窗窗口或者切换图窗窗口 figure n 查找到n存在时 将当前窗口切换成n 不存在时创建标识为
  • Java的String类、Object类、包装类

    1 String类 1 1 String类的两种实例化方式 1 直接赋值 String str hello 2 使用构造方法new的形式赋值 String str new String hello 1 2 String类定义的字符串的比较
  • Eclipse安装SVN插件

    http subclipse tigris org servlets ProjectProcess jsessionid A870EAC9A292637E167F9719F6399F60 pageID p4wYuA Installation
  • Binary Tree on Plane【费用流】

    题目链接 CF 277 E 题意翻译 给你平面上 n 个点 2 n 400 要求用这些点组成一个二叉树 每个节点的儿子节点不超过两个 定义每条边的权值为两个点之间的欧几里得距离 求一个权值和最小的二叉树 并输出这个权值 其中 点 i 可以成
  • Qt导出库接口类无法connect信号

    问题 动态库中的接口类内部有信号 但是在主程序中无法connect 链接时报错 undefined symbol xxx staticMetaObject 解决 在接口类前加导出标记 参考动态库的隐式调用 一般接口类如果不需要继承实现的话
  • 2013年9月22日---2013年10月5日(每天1小时,共15小时,还有5050小时)

    之所以写每天1小时 是因为这段时间浮躁了 面临培训 过于兴奋 另外一个是假期闹得 不过 每天1小时肯定有 为了这1万小时的计算不浮夸 宁可少一些
  • 一个boot.oat crash问题的分析

    最近遇到一个手机重启的问题 日志如下 05 18 13 42 55 553 I AEE AED 10514 pid 1734 tid 1788 name android ui gt gt gt system server lt lt lt
  • 了解数据的发展历程--大数据简史

    数据技术的发展历史就是人类追求美好生活过程最真实的写照 大数据分析的历史与未来展望 最早的数字不是阿拉伯人发明的 数字的起源如同文字起源一样古老 结绳记事 易九家言 中记载 事大 大结其绳 事小 小结其绳 之多少 随物众寡 即根据事件的性质
  • 2048游戏矩阵操作算法

    题目 1 手指向一个方向滑动 所有格子会向那个方向运动 2 相同数字的两个格子 相撞时数字会相加 输入描述 1 输入为一个3 3的矩阵 2 接下来输入一个1 4的数字 1表示向上滑动 2表示向下划动 3表示向左滑动 4表示向右滑动 输出描述