棋盘覆盖问题可视化动图——python

棋盘覆盖问题是一个经典的分治法解决的问题,具体内容可以参照以下博主的解析

为了更好的理解该算法分治的过程

利用了python中的matplotlib库进行了该算法的可视化

具体动画可复制代码在本地运行查看

import matplotlib.pyplot as plt

import numpy as np

count=0

color=['yellow','green','blue','red','purple'] #颜色数组

def fill(x,y,t):

xx=np.linspace(x,x+1,10)

yy=np.linspace(y,y,10)

yy1=np.linspace(y+1,y+1,10)

plt.fill_between(xx,yy,yy1,facecolor=color[t%(len(color))]) #填充

plt.text(x+0.5,y+0.5,t) #添加文字

plt.pause(1) #动态画图 参数为变化的时间

pass

def ChessBoard(tr,tc,dr,dc,size):

if size==1: #算法实现

return

global count

global Board

count+=1

t=count

s=size//2

if dr

ChessBoard(tr,tc,dr,dc,s)

else:

Board[tr+s-1][tc+s-1]=t

fill(tr+s-1,tc+s-1,t)

ChessBoard(tr,tc,tr+s-1,tc+s-1,s)

if dr

=tc+s:

ChessBoard(tr,tc+s,dr,dc,s)

else:

Board[tr+s-1][tc+s]=t

fill(tr+s-1,tc+s,t)

ChessBoard(tr,tc+s,tr+s-1,tc+s,s)

if dr>=tr+s and dc

ChessBoard(tr+s,tc,dr,dc,s)

else:

Board[tr+s][tc+s-1]=t

fill(tr+s,tc+s-1,t)

ChessBoard(tr+s,tc,tr+s,tc+s-1,s)

if dr>=tr+s and dc>=tc+s:

ChessBoard(tr+s,tc+s,dr,dc,s)

else:

Board[tr+s][tc+s]=t

fill(tr+s,tc+s,t)

ChessBoard(tr+s,tc+s,tr+s,tc+s,s)

def pre():

x=2**n

y=2**n

xx=np.linspace(x,x+1,10)

yy=np.linspace(y,y,10)

yy1=np.linspace(y+1,y+1,10)

plt.fill_between(xx,yy,yy1,facecolor='white')

plt.pause(1)

pass

n=int(input())

Board=[[0 for i in range(2**n)] for j in range(2**n)]

x,y=map(int,input().split())

pre() #图像预处理

Board[x][y]=-1

ChessBoard(0,0,x,y,2**n)

for i in range(2**n):

for j in range(2**n):

print(Board[i][j],end=' ')

print()

plt.show()

# n为正方形的阶数 x y为方格点的坐标

python棋盘覆盖问题_棋盘覆盖问题可视化动图——python相关推荐

  1. python画平面直角坐标系_一棵树-可视化之图形化基础之向量

    作者:肖剑华 可视化是前端可视化 图形是计算机图形学 向量就是那个向量,高中学过的,你懂的 树是那棵贼丑的树 结果 首先先看看本文最终的结果. 是不是贼丑!是不是能在画展上卖个好价格! 过程 好了,话 ...

  2. python积木编程软件_童心制物慧编程全新 Python 编辑器正式上线

    原标题:童心制物慧编程全新 Python 编辑器正式上线 作为一款致力于 提供更专业.更多样的STEAM教育解决方案的编程软件,童心制物慧编程一直不断在优化慧编程的教学功能,只为了给所有编程教育者提供 ...

  3. python 进程生命周期_计算客户生命周期价值的python解决方案

    python 进程生命周期 By Lisa Cohen, Zhining Deng, Shijing Fang, and Ron Sielinski 由丽莎·科恩,志宁邓,石井方和罗恩Sielinsk ...

  4. python批量命名教程_《自拍教程69》Python 批量重命名音频文件,AV专家必备!

    本篇主要学习如何Python自定义模块并调用该模块,并重点介绍Python正则表达式的强大的文本处理能力. 案例故事:任何一款终端产品只要涉及音频输出,就肯定涉及音频的解码, 作为一名专业的AV (A ...

  5. 如何确定python对应电脑版本_查看Anaconda版本、Anaconda和python版本对应关系和快速下载...

    官网 查看Anaconda版本 (C:\ProgramData\Anaconda3) C:\Users\Administrator>conda -V conda 4.3.30 Anaconda和 ...

  6. python ide如何运行_如何在Ubuntu上安装IDLE Python IDE

    什么是IDLE? IDLE代表一世ntegratedd前夕大号opmentËnvironment.它是用于Python的IDE,使用Python语言本身编写,基于Tkinter并绑定到Tk小部件集. ...

  7. 用python画奥迪标志_不知道不 OK!53 个 Python 经典面试题详解

    作者 | Chris 翻译 | 苏本如,责编 | 夕颜 头图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 本文列出53个Python面试问题,并且提供了 ...

  8. python大神作品_掌握了这24个顶级Python库,你就是大神!

    全文共11815字,预计学习时长24分钟 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 ...

  9. python作者 google面试_如果Google面试让你用python写一个树的遍历程序

    前几天忽然对python很感兴趣,学了几天也感觉它非常的简洁实用.打破了我这么长时间对java C# C 和vb的审美疲劳,让我眼前一亮."就像读英文一样简单"这句话评价pytho ...

最新文章

  1. c语言递归求五阶行列式源代码,久游堂怎么样 -官网
  2. hdu1529 差分约束(好题)
  3. 前端基础-jQuery的优点以及用法
  4. 用Flink取代Spark Streaming!知乎实时数仓架构演进
  5. Linux下用FFMPEG采集usb摄像头到RTMP
  6. Go map 转 slice
  7. ASPxGridView数据汇总收藏
  8. 14款国内外主流三维GIS软件
  9. 舒尔特注意力训练表格_用微信小程序里训练提升你的专注力
  10. 最简单的Dubbo教程(springBoot纯注解版)
  11. CRC校验关键点说明(内附C语言CRC校验库)
  12. win10 pro 永久激活
  13. c语言盆子接球游戏,适合幼儿园孩子的70个感统训练游戏(开发右脑)
  14. 前端---antd中的日期选择组件
  15. GYM 101350E. Competitive Seagulls (博弈
  16. 这是一篇儿正儿八经的自我介绍~
  17. 对RGB三个通道进行操作示例
  18. 2022年版中国腰果酚市场趋势研究与竞争策略分析报告
  19. keil 增加 芯片包_国内首家!平头哥刚刚宣布开源RISCV内核MCU芯片设计平台
  20. 怎么压缩PDF文件大小?不会操作的快看过来

热门文章

  1. 黑鲨游戏手机2 Pro外观设计曝光:或将新增两条LED灯带
  2. 雷军:哈哈哈哈哈哈 网友:小米9要来了!
  3. MINIGUI编译方法【原创】
  4. 「软件测试」刚从腾讯面试出来,留下了这些面试笔记
  5. vscode如何添加头部注释、作者注释
  6. 面试热问——你在前一份工作(实习)学到什么?
  7. php给一个参数布尔值,php – 布尔值和字符串条件
  8. coreboot学习0:二度相逢是初识
  9. 【Clickhouse】ClickHouse 内部架构介绍
  10. 【ElasticSearch】es Elasticsearch压测实战 II esrally 进阶实战 笔记