软硬件之华山论剑

在2^k*2^k个方格组成的棋盘中,有一个方格被占用,用下图的4种L型骨牌覆盖所有棋盘上的其余所有方格,不能重叠。

代码如下:

def chess(tr,tc,pr,pc,size):
	global mark
	global table
	mark+=1
	count=mark
	if size==1:
		return
	half=size//2
	if pr<tr+half and pc<tc+half:
		chess(tr,tc,pr,pc,half)
	else:
		table[tr+half-1][tc+half-1]=count
		chess(tr,tc,tr+half-1,tc+half-1,half)
	if pr<tr+half and pc>=tc+half:
		chess(tr,tc+half,pr,pc,half)
	else:
		table[tr+half-1][tc+half]=count
		chess(tr,tc+half,tr+half-1,tc+half,half)
	if pr>=tr+half and pc<tc+half:
		chess(tr+half,tc,pr,pc,half)
	else:
		table[tr+half][tc+half-1]=count
		chess(tr+half,tc,tr+half,tc+half-1,half)
	if pr>=tr+half and pc>=tc+half:
		chess(tr+half,tc+half,pr,pc,half)
	else:
		table[tr+half][tc+half]=count
		chess(tr+half,tc+half,tr+half,tc+half,half)

def show(table):
	n=len(table)
	for i in range(n):
		for j in range(n):
			print(table[i][j],end=‘	‘)
		print(‘‘)

mark=0
n=8
table=[[-1 for x in range(n)] for y in range(n)]
chess(0,0,2,2,n)
show(table)

n是棋盘宽度,必须是2^k,本例中n=8,特殊格子在(2,2)位置,如下图所示:

采用分治法每次把棋盘分成4份,如果特殊格子在这个小棋盘中则继续分成4份,如果不在这个小棋盘中就把该小棋盘中靠近中央的那个格子置位,表示L型骨牌的1/3占据此处,每一次递归都会遍历查询4个小棋盘,三个不含有特殊格子的棋盘置位的3个格子正好在大棋盘中央构成一个完整的L型骨牌,依次类推,找到全部覆盖方法。运行结果如下:

转载请注明:转自http://blog.csdn.net/littlethunder/article/details/25288969

软硬件之华山论剑,布布扣,bubuko.com

时间: 2024-10-01 02:41:25

软硬件之华山论剑的相关文章

2015 年最受 Linux 爱好者欢迎的软硬件大盘点

Linux 爱好者都喜欢用哪些硬件,哪些发行版呢?近日 OpenBenchmarking.org 做了一个 2015 年度数据的统计和梳理,Linux Story 特意整理了一下,分享给大家. 转载于:http://www.itxuexiwang.com/a/liunxjishu/2016/0228/181.html?1456926080 OpenBenchmarking.org 启用新的PTS 6.2-Gamvik代码库进行重构,同时采用更强大的服务器——这些才能保障我们统计的乐趣.我们一直坚

ulimit -----修改linux的软硬件限制文件

修改linux的软硬件限制文件/etc/security/limits.conf. 在文件尾部添加如下代码: * soft nofile 65535 * hard nofile 65535 保存并推出. 命令说明: domino type item value      domino是以符号@开头的用户名或组名,*表示所有用户,type设置为hard or soft.item指定想限制的资源.如cpu,core nofile nproc or maxlogins.value是相应的限制值. 保存

软硬件之共生之道——一千零一夜的启示

软硬件之共生之道--一千零一夜的启示 作者:廖恒 我们多次谈到硬件架构发展的道路之曲折,往往像一场曲折的追逐故事,因为软件构架的决策者往往也是设备的购买商,而硬件构架之设计者则成了供应链条上的上游提供商,这种供求关系在一个自由市场经济中决定了二者之间追求与被追求的关系. 在企业IT市场为王的时代,购买者广泛分布在世界各地,由无数大大小小的公司.机构的IT部门整合在一起作为购买的一方:而大型计算机设备OEM(如HP.Dell.IBM等)则凭借多年积累的技术优势.市场能力和遍布全球的销售与服务网络,

Android底层开发之音频输入通道的软硬件分析

Android底层开发之音频输入通道的软硬件分析 我们都知道耳机Mic集成在一直的那种四段耳机Mic插头是Android设备上比较常用.但是也会有分开的情况,比较如果在普通的PC机中装Android系统,那么就是这种情况.所以就有必要对音频输入通道的软件硬件进行统一的分析一下,接下来分析一个实例. 该设备的硬件连接为:基于3157的模拟开关实现的 通道切换. 设备是完全靠硬件实现的,那么就没有软件的什么工作了.但是这并不是一个理想的实现方法,真下的实现方法应该是所有的Mic都是并行的,每个Mic

《软硬件接口》课程大纲

<软硬件接口>课程大纲 Coursera课程 The Hardware/Software Interface是华盛顿大学提供的一门课程,当中汇编语言.进程结构.Java实现等章节内容我觉得对于学编程的同学来说很实用.教学环境是Fedora,顺带介绍了一些经常使用工具的使用. 课程大纲 这门课程将会让学生知道当软件执行时究竟发生了什么,并说明这个问题可以通过硬件架构层.汇编层.C语言层和Java层等数层抽象解答.- 这门课程的核心是关于C.汇编.以及底层数据表示的,但同一时候与更高层(Java语

从节能角度看数据中心软硬件设计(一)

从节能角度看数据中心软硬件设计(一) -PMC公司资深顾问.前Facebook存储架构设计师. OCP创始人之一Per Brasher于CCCC演讲实录- 此次演讲流程如下.首先讨论关注数据中心效率的原因及其提升效率的原始动力所在.第二步讨论影响效率的主要构成部件,这些部件对效率的贡献大概有多少,以及怎样对每个部件的效率进行优化和提高.第三个方面是展望如何进一步降低TCO成本,其中将涉及更先进的数据保护机制.接着会对存储的各种新模式进行一定展望,最后做一个总结. 下表总结了OCP的设计理念,其中

软硬件之共生之道——一千零一夜的启发

软硬件之共生之道--一千零一夜的启发 作者:廖恒 我们多次谈到硬件架构发展的道路之曲折,往往像一场曲折的追逐故事,由于软件构架的决策者往往也是设备的购买商,而硬件构架之设计者则成了供应链条上的上游提供商,这样的供求关系在一个自由市场经济中决定了二者之间追求与被追求的关系. 在企业IT市场为王的时代,购买者广泛分布在世界各地,由无数大大小小的公司.机构的IT部门整合在一起作为购买的一方:而大型计算机设备OEM(如HP.Dell.IBM等)则凭借多年积累的技术优势.市场能力和遍布全球的销售与服务网络

软硬件调试九法之总序

前言: 1.本文内容主要来源于书籍<调试九法:软硬件错误的排查之道>作者David J.Agans,属于读书笔记+个人体会. 2.本书介绍的方法的宗旨不是预防.保障和筛选,以预防bug的产生,而是如何找到bug并修复它们,如何高效的追踪和解决不易察觉的软硬件问题,不针对特定的平台.语言或者工具,不涉及晦涩的测试理论.3.你看过后,可能会咦一声,说“我一直都是这么做的!”,那么恭喜你,你是一个能高效解决问题的工程师. 书中提到了九条规则,可以说是总结的系统而全面,按照这些步骤和要求来做,对解决工

一颗ARM架构芯片的软硬件构成

硬件和软件是一颗芯片系统互相依存的两大部分,本文总结了一颗芯片的软硬件组成. (一)硬件 主控CPU:运算和控制核心.基带芯片基本构架采用微处理器+数字信号处理器(DSP)的结构,微处理器是整颗芯片的控制中心,会运行一个实时嵌入式操作系统(如Nucleus PLUS),DSP子系统负责基带处理.应用处理器则可能包括多颗微处理器,还有GPU.微处理器是ARM的不同系列的产品(也可以是x86架构),可以是64位或者32位. 总线:计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.