`
provista
  • 浏览: 120457 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Young Tableau问题的随笔

阅读更多
Young Tableau问题的描述是这样的,一个由N个小方块组成的阵列(不一定要是矩形,可以是一个任意"光滑"且"单调"的组合),从1到N这N个数填入方块中,要求全部填满并且一个数只能填一个方格一次.并且满足,每个数的上方的数和左方的数比它大.求最后一共有多少种填法.比如一个4*4格子的正方形,1~16这16个数按照上述规则填入,那么一共多少种填法.

笔者根据理解,还是用程序实现了一下算了.不遍历输出所有种类的填法,只算数目而已.语言就用java,比较没挑战性,就练习一下.思想主要就一个递归:16肯定是占据左上角的格子,然后15就可以有两个选择了,对每种选择依次填下去.
笔者的解决方法,觉得可以视为一个树状展开,树的层次从上到下依次可看做16,15,14...,3,2,1. 比如填入15时可以有两个格可选,那么对目前来说就是两个叶子节点,对每一个15的填法,填14时就按照规则找到14可以填的格子作为该节点的儿子,最终要找的就是有多少个叶子节点而已.
需要根据题目的要求找到依次每个数(从16 downwards to 1)填入时有多少种可填法,填完了就将此格置位.某个格子在某个时刻是不是可填,依赖于上方和左方的格子是否已填,如果上方或者左方是边界,那么就如同已填.
代码如下:
public void find(){
		boolean[][]initialMatx = generateMatx();
		int nowFilling=ROW*COLUMN-1;
		System.out.println(doExpend(nowFilling, initialMatx));
	}

其中
private int doExpend(int nowFilling, boolean[][] nowMatx)
为递归函数,找到该节点有多少种填法后,把信息布尔矩阵复制并更新一遍,进行迭代即可.需要注意的是返回值,每个节点新增的儿子数需要减1(也就是父亲自己)才是迭代到当前的叶子节点的新增数,于是把此节点的兄弟姐妹数加上SUM(每个兄弟姐妹的儿子节点的数目-1)就是当前的叶子节点数,如果迭代完毕,到了数字1(实际上,只需要进行到数字3完成就可以了,因为2和1必定无法继续增加系统的叶子),则返回1,因为它只有自身,作为一片叶子而存在.
private int doExpend(int nowFilling, boolean[][] nowMatx) {
		if(nowFilling==1){
			return 1;
		}
		List<Grid> thisCount = findLegalGridToFill(nowMatx);
		int[] ChildNumber = new int[thisCount.size()];
		for (int k = 0; k < thisCount.size(); k++) {
			Grid grid = thisCount.get(k);
			//为每个分支复制新的matx,递归,结果累加至返回值
			int stepNew = nowFilling -1;
			boolean[][] thisNewMat = this.getNewMatx(nowMatx, grid.getRow(), grid.getCol());
			ChildNumber[k]=doExpend(stepNew, thisNewMat);
		}
		int ExpandingDiff=0;
		for(int ch = 0;ch<ChildNumber.length;ch++){
			ExpandingDiff+=(ChildNumber[ch]-1);
		}
		return thisCount.size()+ExpandingDiff;
	}
分享到:
评论

相关推荐

    Tableau 10.4破解版

    Tableau 10.4 破解版,win10可用!!!无需时间驻留。

    Tableau 超市数据集

    Tableau 超市数据集

    Tableau 8权威指南

    数据可视化Tableau教程,想做数据可视化方面的可以看看,数据可视化利器。

    Tableau 数据处理:计算平均值容易犯的错

    内容概要:【Tableau bug合集2:计算平均值容易犯的错】一文的辅助资料,用于讲解avg(分子/分母)和sum(分子)/sum(分母)的差异。该资源包含Excel版本的数据及统计结果和Tableau版本的统计结果。 适合人群:tableau...

    Tableau项目练习素材

    有同学在博文下留言需要tableau项目练习素材,上传供大家练习使用,希望能帮到需要的同学~

    Tableau Server 10.1 入门指南

    Tableau Server 10.1 入门指南

    tableau超市数据实战

    tableau官方下载的超市原始数据,用于tableau实战练习

    Tableau 图表大全

    Tableau 图表大全

    Tableau文字云實作

    tableau 文字云操作範例實作, 以關鍵字搭配其計量數, 呈現字關鍵字文字云, 出現次數多的字較大

    Tableau openstreet地图包

    Tableau openstreet地图包 地图包放在安装文件map 文件夹下 使用方法: 地图&gt;&gt;&gt;背景地图&gt;&gt;&gt;autonavi

    [Tableau] Tableau 数据可视化 开发技巧 (英文版)

    [Packt Publishing] Tableau 数据可视化 开发技巧 (英文版) [Packt Publishing] Tableau Data Visualization Cookbook (E-Book) ☆ 图书概要:☆ Over 70 recipes for creating visual stories with your data ...

    TableauServer帮助手册

    TableauServer帮助手册,进行TableauServer配置,权限分配等

    Practical Tableau-O'Reilly(2018).epub

    Eight years ago, my then-boss asked our team of three analysts to try using a “new” tool called Tableau. All three of us did the first thing that came naturally and attempted to replicate our ...

    tableau表扩展-填补缺失日期

    资源内包含tableau模板源文件,文本说明,python脚本文件,有需要的可以自行下载

    C++程序设计语言(特别版)

    《C++程序设计语言》介绍了标准C++以及由C++所支持的关键性编程技术和设计技术。标准C++较以前的版本功能更强大,其中许多新的语言特性,如名字空间、异常、模板、运行时类型声明等使得新技术得以直接应用。...

    tableau公式大全

    Tableau 函数(按字母顺序) 版本: 2018.3 适用于: Tableau Desktop, Tableau Online, Tableau Server 本参考中的 Tableau 函数按字母顺序进行组织。单击某个字母以查看以它开头的函数。如果没有以该字母开头的...

    TABLEAU与R集成

    TABLEAU与R集成 TABLEAU与R集成 TABLEAU与R集成 TABLEAU与R集成

    Tableau制作仪表盘样式图表

    资源内包含tableau源文件以及制作图表详细步骤文档,有需要的小伙伴欢迎下载使用

    tableau数据源.zip

    Tableau地图数据源,包括autonavi.tms;ESRI Nat Geo World Map;ESRI World Imagery等14个地图数据源,可直接导入tableau地图库中

    Tableau 数据可视化与实战 118课.txt

    Tableau 数据可视化与实战 118课 课程目录: 第1章: Tableau数据可视化应用实战 1.本门课程目录 2.本门课程目标 3.Tableau概述_什么是数据可视化? 4.Tableau概述_如何用图表讲故事?(1) 5.Tableau概述_Tableau发展...

Global site tag (gtag.js) - Google Analytics