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过期解决工具",即"Trial-Reset",是专门针对这种情况设计的。这个工具的主要功能是清除...
然后,将处理后的数据导入Tableau,即可解决缺失日期的问题。 4. **Tableau仪表板和故事**:一旦缺失日期被填补,你可以在Tableau仪表板上创建时间序列图表,如线图或面积图,以清晰地展示数据随时间的变化趋势。...
Tableau是一款强大的数据可视化工具,广泛应用于数据分析和商业智能领域。这个“Tableau项目练习素材”包含了一系列资源,旨在帮助用户提升Tableau的实际操作技能。其中,“考试分数.xlsx”和“内容评估-网站内容....
**Tableau实验数据集** Tableau是一款强大的数据可视化和商业智能工具,被广泛应用于数据分析、数据挖掘和报告制作。这个“Tableau实验数据集”包含了用于学习和实践Tableau功能的典型数据集,适合初学者熟悉软件...
然而,在实际部署过程中可能会遇到各种问题,比如尽管已经成功安装了ODBC驱动,但Tableau Server仍然无法识别该驱动的情况。 #### 二、问题描述与分析 根据提供的信息,“安装ODBC驱动后,Server还是未能识别驱动”...
这部分涵盖了数据类型、数据源以及数据准备的方法,包括如何将“业务问题”转化为数据的语言。了解数据的性质和结构是进行高效数据可视化工作的基础。 5. Tableau的核心概念 包括Tableau的四个构建柱:维度、度量与...
Tableau是一款专业的数据可视化工具,它可以帮助用户通过可视化分析来探索和理解大量数据。Tableau的官方教程为用户提供了一个全面的使用手册,尤其适合初学者入门学习,同时对于那些已经熟悉Tableau的用户提供...
Tableau是一款强大的数据可视化工具,它提供了简洁而直观的方式来进行数据分析,并以高度交互的方式将数据的洞察力以报表的形式呈现给用户。在IT领域中,Tableau被广泛应用于商业智能(BI)、数据可视化、数据探索和...
本文将围绕 Tableau Server 升级调研目录,讨论升级前需要考虑的各种因素和问题。 一、环境配置 在升级 Tableau Server 之前,需要了解当前服务器的环境配置。这包括服务器的操作系统、CPU 核数、内存大小、安装...
Tableau是一款流行的可视化分析工具,它能够帮助用户从各种数据源中提取数据,并将数据转化为图表、仪表板以及故事叙述等多种形式的可视化信息。在Tableau中,文字云是一种通过大小不同的文字来展示数据中关键词的...
Tableau数据可视化实战 在本书中,我们将深入探讨 Tableau 数据可视化的实战应用。Tableau 作为一款非常强大的数据可视化工具,已经被全球数万家企业所采用。通过本书的学习,读者将能够快速掌握 Tableau 的使用,...
"说明.txt"文件可能包含了关于如何部署和使用这些源代码的详细步骤,包括环境配置、API调用示例以及可能出现的问题和解决方案。在实际应用中,阅读并遵循这份说明是至关重要的,因为它可以帮助开发者理解代码的工作...
书中将通过实际业务场景,演示如何运用Tableau解决数据分析问题,例如销售业绩分析、客户行为挖掘等,让读者能够在实践中巩固理论知识,提升解决问题的能力。 总的来说,《人人都是数据分析师:TABLEAU应用实战》这...
Tableau 10.4 破解版,win10可用!!!无需时间驻留。
Tableau是一款强大的数据可视化工具,它允许用户通过交互式仪表盘和工作表来探索和理解数据。本资源提供了从零开始制作Tableau仪表盘样式图表的详细步骤,旨在帮助初学者快速掌握数据可视化技巧。 首先,打开`仪表...
### Tableau Server 10.1 入门指南知识点总结 #### 一、Tableau Server 10.1 概览 **Tableau Server 10.1** 是一款由 **Tableau Software** 开发的企业级数据分析平台,主要用于分享、发布和管理在 **Tableau ...
Tableau 超市数据集
tableau香港酒店数据
内容概要:【Tableau bug合集2:计算平均值容易犯的错】一文的辅助资料,用于讲解avg(分子/分母)和sum(分子)/sum(分母)的差异。该资源包含Excel版本的数据及统计结果和Tableau版本的统计结果。 适合人群:tableau...