ccf-消除类游戏-python

在这里插入图片描述

n,m=map(int,input().split())#接收行,列
hang=[]
lie=[[] for i in range(m)]
for i in range(n):
    hang.append(list(map(int,input().split())))#接收每行的数
    for j in range(m):
        lie[j].append(hang[i][j])#接收每列的数
line=hang#创建一个副本的行
for i in range(n):#消除行的重复
    time=1#记录相同次数
    last=hang[i][0]#记录上次的数
    ind=[0]#记录相同的下标
    ll=0#记录当前下标
    for j in hang[i][1:m]:#从第一行开始遍历
        ll+=1
        if j==last:#当前值与上个值相等
            time+=1
            ind.append(ll)#就存进去
        elif j!=last:#当前值与上个值不相等
            if len(ind) >= 3:#如果存的下标有三个及以上
                for k in ind:
                    line[i][k]=0#在副本变成0
            for k in range(time):
                if len(ind)>=1:
                    ind.pop(len(ind)-1)#根据次数  总是移除最后的下标
            last=j
            time=1
            ind.append(ll)
    if len(ind) >= 3:#同上
        for k in ind:
            line[i][k] = 0
for i in range(m):#消除列的重复,同上
    time = 1
    last = lie[i][0]
    ind = [0]
    ll = 0
    for j in lie[i][1:n]:
        ll+=1
        if j == last:
            time += 1
            ind.append(ll)
        elif j != last:
            if len(ind) >= 3:
                for k in ind:
                    line[k][i] = 0
            for k in range(time):
                if len(ind) >= 1:
                    ind.pop(len(ind) - 1)
            last = j
            time = 1
            ind.append(ll)
    if len(ind) >= 3:
        for k in ind:
            line[k][i] = 0
for i in range(n):#输出副本
    print(" ".join(str(j) for j in line[i]))

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值