`
provista
  • 浏览: 121842 次
  • 性别: 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表扩展-填补缺失日期

    然后,将处理后的数据导入Tableau,即可解决缺失日期的问题。 4. **Tableau仪表板和故事**:一旦缺失日期被填补,你可以在Tableau仪表板上创建时间序列图表,如线图或面积图,以清晰地展示数据随时间的变化趋势。...

    tableau过期解决工具及操作说明

    这时,如果尝试卸载并重新安装Tableau,可能会遇到一些问题,因为系统仍然保留了先前安装的痕迹。 在描述中提到的"tableau过期解决工具",即"Trial-Reset",是专门针对这种情况设计的。这个工具的主要功能是清除...

    Tableau项目练习素材

    Tableau是一款强大的数据可视化工具,广泛应用于数据分析和商业智能领域。这个“Tableau项目练习素材”包含了一系列资源,旨在帮助用户提升Tableau的实际操作技能。其中,“考试分数.xlsx”和“内容评估-网站内容....

    Tableau实验数据集

    **Tableau实验数据集** Tableau是一款强大的数据可视化和商业智能工具,被广泛应用于数据分析、数据挖掘和报告制作。这个“Tableau实验数据集”包含了用于学习和实践Tableau功能的典型数据集,适合初学者熟悉软件...

    Linux Tableau Server Presto ODBC驱动配置问题

    然而,在实际部署过程中可能会遇到各种问题,比如尽管已经成功安装了ODBC驱动,但Tableau Server仍然无法识别该驱动的情况。 #### 二、问题描述与分析 根据提供的信息,“安装ODBC驱动后,Server还是未能识别驱动”...

    tableau官方教程-中文版-10.5.pdf

    Tableau是一款专业的数据可视化工具,它可以帮助用户通过可视化分析来探索和理解大量数据。Tableau的官方教程为用户提供了一个全面的使用手册,尤其适合初学者入门学习,同时对于那些已经熟悉Tableau的用户提供...

    Tableau手册(白皮书)

    Tableau是一款强大的数据可视化工具,它提供了简洁而直观的方式来进行数据分析,并以高度交互的方式将数据的洞察力以报表的形式呈现给用户。在IT领域中,Tableau被广泛应用于商业智能(BI)、数据可视化、数据探索和...

    tableau server升级调研目录

    本文将围绕 Tableau Server 升级调研目录,讨论升级前需要考虑的各种因素和问题。 一、环境配置 在升级 Tableau Server 之前,需要了解当前服务器的环境配置。这包括服务器的操作系统、CPU 核数、内存大小、安装...

    Tableau文字云實作

    Tableau是一款流行的可视化分析工具,它能够帮助用户从各种数据源中提取数据,并将数据转化为图表、仪表板以及故事叙述等多种形式的可视化信息。在Tableau中,文字云是一种通过大小不同的文字来展示数据中关键词的...

    Tableau集成C#源码

    "说明.txt"文件可能包含了关于如何部署和使用这些源代码的详细步骤,包括环境配置、API调用示例以及可能出现的问题和解决方案。在实际应用中,阅读并遵循这份说明是至关重要的,因为它可以帮助开发者理解代码的工作...

    Tableau数据可视化实战.pdf

    Tableau数据可视化实战 在本书中,我们将深入探讨 Tableau 数据可视化的实战应用。Tableau 作为一款非常强大的数据可视化工具,已经被全球数万家企业所采用。通过本书的学习,读者将能够快速掌握 Tableau 的使用,...

    《人人都是数据分析师:TABLEAU应用实战》_Tableau_数据分析_

    书中将通过实际业务场景,演示如何运用Tableau解决数据分析问题,例如销售业绩分析、客户行为挖掘等,让读者能够在实践中巩固理论知识,提升解决问题的能力。 总的来说,《人人都是数据分析师:TABLEAU应用实战》这...

    Tableau 10.4破解版

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

    Tableau 超市数据集

    Tableau 超市数据集

    Tableau制作仪表盘样式图表

    Tableau是一款强大的数据可视化工具,它允许用户通过交互式仪表盘和工作表来探索和理解数据。本资源提供了从零开始制作Tableau仪表盘样式图表的详细步骤,旨在帮助初学者快速掌握数据可视化技巧。 首先,打开`仪表...

    Tableau Server 10.1 入门指南

    ### Tableau Server 10.1 入门指南知识点总结 #### 一、Tableau Server 10.1 概览 **Tableau Server 10.1** 是一款由 **Tableau Software** 开发的企业级数据分析平台,主要用于分享、发布和管理在 **Tableau ...

    tableau香港酒店数据

    tableau香港酒店数据

    Tableau server 10.3 中文文档(用户指南,技术参考手册)

    Tableau Server 10.3 是一款强大的商业智能和数据可视化平台,专为组织提供数据共享、协作和分析的功能。用户指南和技术参考手册是了解和掌握该版本Tableau Server的关键资源,它们详细阐述了如何有效地利用这个工具...

    中国电影票房Tableau分析

    通过使用Tableau这一强大的数据可视化工具,我们可以深入理解和洞察中国电影票房的多种趋势和模式。本文将详细介绍如何利用Tableau进行有效的票房数据分析,以及如何构建直观易懂的仪表板。 1. 数据可视化绘图方法 ...

Global site tag (gtag.js) - Google Analytics