小米机试 2048

小米机试 2048

题目说明

《2048》是一款热门的数字游戏。游戏中,每个方块上的数字都有2的幂,数字方块会根据指令整体进行上下左右移动,如果两个数字相同的方块在移动中碰撞,他们就会合成一个新的方块。例如下图为4*4格子的游戏,0表示格子为空,图a为移动前格子中的数字,图b为图a左移后的结果:

例如:

输入

0 0 2 4

0 2 2 2

0 4 2 2

8 8 2 2

输出

2 4 0 0

4 2 0 0

4 4 0 0

16 4 0 0

解题思路:

从左到右遍历,如果a[i][j] == a[i][j+1]

则让 a[i][j] += a[i][j]

同时清除 a[i][j+1] = 0

最后删掉数组中的0元素

重新用一个空矩阵,把a的值挨个复制进去

python代码

python 复制代码
n = 4
a = [[0,0,2,4],[0,2,2,2],[0,4,2,2],[8,8,2,2]]
for i in range(len(a)):
    for j in range(len(a[0])-1):
        if a[i][j] == a[i][j+1]:
            a[i][j] += a[i][j]
            a[i][j+1] = 0

print(a)
for i in range(len(a)):
    while 0 in a[i]:
        a[i].remove(0)
print(a)
ans = [[0]*n  for _ in range(n)]
for i in range(len(a)):
    for j in range(len(a[i])):
        ans[i][j] = a[i][j]
print(ans)

输出结果:

python 复制代码
[[0, 0, 2, 4], [0, 4, 0, 2], [0, 4, 4, 0], [16, 0, 4, 0]]
[[2, 4], [4, 2], [4, 4], [16, 4]]
[[2, 4, 0, 0], [4, 2, 0, 0], [4, 4, 0, 0], [16, 4, 0, 0]]
相关推荐
重生之我要进大厂7 分钟前
LeetCode 876
java·开发语言·数据结构·算法·leetcode
KBDYD101042 分钟前
C语言--结构体变量和数组的定义、初始化、赋值
c语言·开发语言·数据结构·算法
Crossoads1 小时前
【数据结构】排序算法---桶排序
c语言·开发语言·数据结构·算法·排序算法
自身就是太阳1 小时前
2024蓝桥杯省B好题分析
算法·职场和发展·蓝桥杯
孙小二写代码2 小时前
[leetcode刷题]面试经典150题之1合并两个有序数组(简单)
算法·leetcode·面试
little redcap2 小时前
第十九次CCF计算机软件能力认证-1246(过64%的代码-个人题解)
算法
David猪大卫2 小时前
数据结构修炼——顺序表和链表的区别与联系
c语言·数据结构·学习·算法·leetcode·链表·蓝桥杯
Iceberg_wWzZ2 小时前
数据结构(Day14)
linux·c语言·数据结构·算法
夏天天天天天天天#2 小时前
求Huffman树及其matlab程序详解
算法·matlab·图论
Infedium2 小时前
优数:助力更高效的边缘计算
算法·业界资讯