python棋盘覆盖问题_棋盘覆盖问题可视化动图——python
棋盘覆盖问题可视化动图——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相关推荐
- python画平面直角坐标系_一棵树-可视化之图形化基础之向量
作者:肖剑华 可视化是前端可视化 图形是计算机图形学 向量就是那个向量,高中学过的,你懂的 树是那棵贼丑的树 结果 首先先看看本文最终的结果. 是不是贼丑!是不是能在画展上卖个好价格! 过程 好了,话 ...
- python积木编程软件_童心制物慧编程全新 Python 编辑器正式上线
原标题:童心制物慧编程全新 Python 编辑器正式上线 作为一款致力于 提供更专业.更多样的STEAM教育解决方案的编程软件,童心制物慧编程一直不断在优化慧编程的教学功能,只为了给所有编程教育者提供 ...
- python 进程生命周期_计算客户生命周期价值的python解决方案
python 进程生命周期 By Lisa Cohen, Zhining Deng, Shijing Fang, and Ron Sielinski 由丽莎·科恩,志宁邓,石井方和罗恩Sielinsk ...
- python批量命名教程_《自拍教程69》Python 批量重命名音频文件,AV专家必备!
本篇主要学习如何Python自定义模块并调用该模块,并重点介绍Python正则表达式的强大的文本处理能力. 案例故事:任何一款终端产品只要涉及音频输出,就肯定涉及音频的解码, 作为一名专业的AV (A ...
- 如何确定python对应电脑版本_查看Anaconda版本、Anaconda和python版本对应关系和快速下载...
官网 查看Anaconda版本 (C:\ProgramData\Anaconda3) C:\Users\Administrator>conda -V conda 4.3.30 Anaconda和 ...
- python ide如何运行_如何在Ubuntu上安装IDLE Python IDE
什么是IDLE? IDLE代表一世ntegratedd前夕大号opmentËnvironment.它是用于Python的IDE,使用Python语言本身编写,基于Tkinter并绑定到Tk小部件集. ...
- 用python画奥迪标志_不知道不 OK!53 个 Python 经典面试题详解
作者 | Chris 翻译 | 苏本如,责编 | 夕颜 头图 | CSDN付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 本文列出53个Python面试问题,并且提供了 ...
- python大神作品_掌握了这24个顶级Python库,你就是大神!
全文共11815字,预计学习时长24分钟 Python有以下三个特点: · 易用性和灵活性 · 全行业高接受度:Python无疑是业界最流行的数据科学语言 · 用于数据科学的Python库的数量优势 ...
- python作者 google面试_如果Google面试让你用python写一个树的遍历程序
前几天忽然对python很感兴趣,学了几天也感觉它非常的简洁实用.打破了我这么长时间对java C# C 和vb的审美疲劳,让我眼前一亮."就像读英文一样简单"这句话评价pytho ...
最新文章
- c语言递归求五阶行列式源代码,久游堂怎么样 -官网
- hdu1529 差分约束(好题)
- 前端基础-jQuery的优点以及用法
- 用Flink取代Spark Streaming!知乎实时数仓架构演进
- Linux下用FFMPEG采集usb摄像头到RTMP
- Go map 转 slice
- ASPxGridView数据汇总收藏
- 14款国内外主流三维GIS软件
- 舒尔特注意力训练表格_用微信小程序里训练提升你的专注力
- 最简单的Dubbo教程(springBoot纯注解版)
- CRC校验关键点说明(内附C语言CRC校验库)
- win10 pro 永久激活
- c语言盆子接球游戏,适合幼儿园孩子的70个感统训练游戏(开发右脑)
- 前端---antd中的日期选择组件
- GYM 101350E. Competitive Seagulls (博弈
- 这是一篇儿正儿八经的自我介绍~
- 对RGB三个通道进行操作示例
- 2022年版中国腰果酚市场趋势研究与竞争策略分析报告
- keil 增加 芯片包_国内首家!平头哥刚刚宣布开源RISCV内核MCU芯片设计平台
- 怎么压缩PDF文件大小?不会操作的快看过来