pic22M 2022-04-20 22:57 采纳率: 33.3%
浏览 44
已结题

python5*5坐标问题

有一个5*5坐标,每个坐标对应'green' 'red' 'blue' 'orange' 'purple' 5个字符串中的一个。 如(1 1 green) (1 2 purple) 我选定一个坐标,需要找到与它相邻且对应字符串相同的所有坐标。

img

我将坐标行和列分别扩充到边界,与选取的进行对比

但是这样比较范围至多只能扩展成以选取坐标为交叉中心的十字形区域

我想找到相邻且对应字符串相同的所有坐标

  • 写回答

3条回答 默认 最新

  • 关注

    用队列进行广度搜索即可

    你题目的解答代码如下:

     mp = [
    ["R","B","P","G","R"],
    ["R","B","G","P","G"],
    ["R","P","G","R","B"],
    ["R","R","R","B","P"],
    ["P","R","R","B","P"]
    ]
    x = int(input("请输入x坐标1-5:"))-1
    y = int(input("请输入y坐标1-5:"))-1
    dn = [(0,1),(0,-1),(1,0),(-1,0)]
    qu = [(x,y)]  #第一个坐标放到队列中
    cv = mp[y][x]
    mp[y][x] = " "   #把mp中第一个坐标内容清空, 下次就不会重复判断了
    print("所有坐标:")
    while len(qu)>0: #判断队列为非空则循环
        x,y = qu.pop(0) #从队列中取出队头坐标
        print("x =",x+1,", y =",y+1)
        for ux,uy in dn:
            fx = x + ux
            fy = y + uy
            if 0<=fx<5 and 0<=fy<5 and mp[fy][fx]==cv:
                qu.append((fx,fy))  #找到的坐标放到队列中
                mp[fy][fx] = " "   #把找到的坐标内容清空, 下次就不会重复判断了
    #遍历之后的mp
    print(*mp,sep="\n")
    

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助