题目大概如下:
给定一个给定大小的立方体:
2x3x6;
3x3x3;
3x5x6;
之后计算这个立方体中小矩形的数量,
组成一个最小的其中单位的大小为1,
也就是最小的立方体在原立方体中占
的位置为1x1x1;
但是同样的1x1x2这个矩形也会从2x3x6
中去获取。
那么计算这道题的思路一开始我想到了
排列组合。
继而我想,三维的问题,先通过解决二维
的问题来解决,也就是先通过解决原立方体上
一个面上的问题继而再解决它对应的三维方向
上的其他问题。
(1)如上图1,ogirinalShape是原立方体上一个2x3的横截面,
而构成这个横截面的坐标如果以1x1这个二维最小单位去区分,
会分为如图那样以一些“点”为端点的许多的坐标组出现。
同样在
这个动图中,通过蓝色透明层(也就是countShape,用来统计一个给定大小的平面
上有几个不同的1x1的大小的矩形存在),来统计计算countShape在originalShape中
出现的不同变种,
ok,当countShape随着从1x1开始不断根据originalShape大小,而不断变化,
并且不会有重复占用位置的大小的数据遍历之后,也就是说明了这个二维层面
上的小矩形体可以存在的数量。
计算这个数量我考虑到用到2x3这个大小的(2+1)x(3+1)= 12
个坐标数据(最大外框坐标),并且对应的变化到countShape可以变化到
得到的不同的坐标数据(countShape坐标),去用编程求解。
这是第一步。
(2)如上图2,假设有一辆疾驰而来的列车,列车载着有不同车厢里
有相同的列车识别码的人们,比如1号车厢里的为9901A,同样地,如果
有8节车厢,那么每一节车厢都会有这个9901A,那么相同列车识别码
的人,他们会参加一个列车长组织的抽奖活动,抽奖活动会最后公布一个
列车活动组合码,活动组合码的规则就是说相同列车识别码的人去合并
起来组成一个“列车链”,而最终这个链有多长是随机的,也就是可以是
长度1,即不跟其他车厢的人组合,也可能是8,可能是5.
而最终列车长公布抽奖结果后,这个码就是对应列车识别码组合的组合码。
同样的,列车识别码不会有不同长度的存在。
这样去思考后,我觉得去计算第三维度的小矩形体的数量就可以根据在
列车长度上出现的组合码的组合变化数量来进行计算。
即最简单的1+2+.....+100,车厢号累加的最后数值。
(3)通过第三维度不同大小的伸缩,得到了第三维度的这个z轴上计算的
乘数,那么我预测最终的问题的结果就是一个面上出现的不同矩形的数量,
乘以z轴计算的第二步骤的累加值。