Cube Front Back Left Right Top Bottom
1 R B G Y B Y
2 R G G Y B B
3 Y B R G Y R
4 Y G B R R R
The objective is to find ways to stack the four cubes as a vertical column so that each side of the column is showing all four colors.
In a compiled language of your choice, write a program to find all successful permutations
13 个解决方案
#1
对齐没有对好.
#2
和染色问题差不多吧!或者是魔方
#3
最讨厌笔试的时候出这种题目。短时间内写出高质量的算法。
真正到了工作中,压根没有这种强度的编程能力要求。
真正到了工作中,压根没有这种强度的编程能力要求。
#4
不好做,要考虑到立方体的空间特性,因为同一个立方体转一下会变成另一种情况,还是同意楼上的观点,要我短时间内找出好的算法来,真的会把我逼疯掉
#5
好難哦﹐那位高手進來看看﹐給我們大家講講怎么作
#6
mark
#7
我有个办法,不过是就此题的情况来分析的,应该不具有通用性。
因为要求堆起来的立方体的侧面要显示四种颜色,那么四个侧面就是16个面,每种颜色占据四个面。那么侧面的各个面加起来应该满足这个关系:
R = 4;G = 4;B = 4;Y = 4;
你可以遍历一下这个矩阵,把每一层有几个R,几个G,几个B,几个Y纪录下来,还有一共有多少个R、G、B、Y都可以记录下来。然后在组合的时候直接判断是不是满足上面每个颜色综合都等于4的条件,这样判断我认为可以比较快的排除掉大部分不满足的情况,应该可以提高一些效率。
另外值得注意的是,立方体无论如何旋转,front和back,top和bottom,left和right这样对着的面是相关联的,一个被确定,另外一个也被确定。因为每一层只要四个面,另外两个要作为top和bottom,那么在选取的时候记得一对一对的选,不要一个一个的选,不然又要增加不必要的判断,还没准搞错了。
我只是无意中想到了上面的解法,也不知道合不合理,效率好不好,请高手帮忙分析!
因为要求堆起来的立方体的侧面要显示四种颜色,那么四个侧面就是16个面,每种颜色占据四个面。那么侧面的各个面加起来应该满足这个关系:
R = 4;G = 4;B = 4;Y = 4;
你可以遍历一下这个矩阵,把每一层有几个R,几个G,几个B,几个Y纪录下来,还有一共有多少个R、G、B、Y都可以记录下来。然后在组合的时候直接判断是不是满足上面每个颜色综合都等于4的条件,这样判断我认为可以比较快的排除掉大部分不满足的情况,应该可以提高一些效率。
另外值得注意的是,立方体无论如何旋转,front和back,top和bottom,left和right这样对着的面是相关联的,一个被确定,另外一个也被确定。因为每一层只要四个面,另外两个要作为top和bottom,那么在选取的时候记得一对一对的选,不要一个一个的选,不然又要增加不必要的判断,还没准搞错了。
我只是无意中想到了上面的解法,也不知道合不合理,效率好不好,请高手帮忙分析!
#8
不知道我上面的叙述是否明了,在组合这些立方体的时候,可以利用4个颜色数值都等于4来排除不合理情况,当然也可以寻找适合的情况,看具体怎么实现更合理了,这个我没有细想。
#9
感觉比较难.想起来就觉得难.写出来更难.写出高质量的代码......
楼下的继续.
楼下的继续.
#10
晕了,不是数学天才,一看这就怕:(
#11
呵呵,看来 大家的感觉都还差不多呀!~
关键是怕....
关键是怕....
#12
给的数据有问题吧?
只考虑两个面的情况.例如选1里的R做正面,它的背面是B,那其它3个里
做为对面的必须有(R, B)或(B, R),考虑1里的其它两组也不满足。
只考虑两个面的情况.例如选1里的R做正面,它的背面是B,那其它3个里
做为对面的必须有(R, B)或(B, R),考虑1里的其它两组也不满足。
#13
这样可以吗?
先把每种颜色定义成一个数,所有颜色的数中的4个之和唯一。
对于 R B G Y B Y ,其中可以做上下面的一共三种情况 分别是 R :B G:Y B:Y 。这三种情况下,在确定上下面之后,其他四个面和四个方向一共有4种对应关系。因此现在共有12种对应关系;因为上下面可以颠倒,因此每个立方体可以有24种和空间方向的对应关系,把所有这些对应关系都放到一个两维数组中(其中最后两个放上下面的色彩),产生一个24*6的数组。
其它的也是这样,然后在数组里面寻找前所有4个数组的组合,让4个数组的一单元所有的数之和等于4种颜色之和,2单元,3单元,4单元之和都等于4种颜色之和。
不知道是否可行。
先把每种颜色定义成一个数,所有颜色的数中的4个之和唯一。
对于 R B G Y B Y ,其中可以做上下面的一共三种情况 分别是 R :B G:Y B:Y 。这三种情况下,在确定上下面之后,其他四个面和四个方向一共有4种对应关系。因此现在共有12种对应关系;因为上下面可以颠倒,因此每个立方体可以有24种和空间方向的对应关系,把所有这些对应关系都放到一个两维数组中(其中最后两个放上下面的色彩),产生一个24*6的数组。
其它的也是这样,然后在数组里面寻找前所有4个数组的组合,让4个数组的一单元所有的数之和等于4种颜色之和,2单元,3单元,4单元之和都等于4种颜色之和。
不知道是否可行。
#1
对齐没有对好.
#2
和染色问题差不多吧!或者是魔方
#3
最讨厌笔试的时候出这种题目。短时间内写出高质量的算法。
真正到了工作中,压根没有这种强度的编程能力要求。
真正到了工作中,压根没有这种强度的编程能力要求。
#4
不好做,要考虑到立方体的空间特性,因为同一个立方体转一下会变成另一种情况,还是同意楼上的观点,要我短时间内找出好的算法来,真的会把我逼疯掉
#5
好難哦﹐那位高手進來看看﹐給我們大家講講怎么作
#6
mark
#7
我有个办法,不过是就此题的情况来分析的,应该不具有通用性。
因为要求堆起来的立方体的侧面要显示四种颜色,那么四个侧面就是16个面,每种颜色占据四个面。那么侧面的各个面加起来应该满足这个关系:
R = 4;G = 4;B = 4;Y = 4;
你可以遍历一下这个矩阵,把每一层有几个R,几个G,几个B,几个Y纪录下来,还有一共有多少个R、G、B、Y都可以记录下来。然后在组合的时候直接判断是不是满足上面每个颜色综合都等于4的条件,这样判断我认为可以比较快的排除掉大部分不满足的情况,应该可以提高一些效率。
另外值得注意的是,立方体无论如何旋转,front和back,top和bottom,left和right这样对着的面是相关联的,一个被确定,另外一个也被确定。因为每一层只要四个面,另外两个要作为top和bottom,那么在选取的时候记得一对一对的选,不要一个一个的选,不然又要增加不必要的判断,还没准搞错了。
我只是无意中想到了上面的解法,也不知道合不合理,效率好不好,请高手帮忙分析!
因为要求堆起来的立方体的侧面要显示四种颜色,那么四个侧面就是16个面,每种颜色占据四个面。那么侧面的各个面加起来应该满足这个关系:
R = 4;G = 4;B = 4;Y = 4;
你可以遍历一下这个矩阵,把每一层有几个R,几个G,几个B,几个Y纪录下来,还有一共有多少个R、G、B、Y都可以记录下来。然后在组合的时候直接判断是不是满足上面每个颜色综合都等于4的条件,这样判断我认为可以比较快的排除掉大部分不满足的情况,应该可以提高一些效率。
另外值得注意的是,立方体无论如何旋转,front和back,top和bottom,left和right这样对着的面是相关联的,一个被确定,另外一个也被确定。因为每一层只要四个面,另外两个要作为top和bottom,那么在选取的时候记得一对一对的选,不要一个一个的选,不然又要增加不必要的判断,还没准搞错了。
我只是无意中想到了上面的解法,也不知道合不合理,效率好不好,请高手帮忙分析!
#8
不知道我上面的叙述是否明了,在组合这些立方体的时候,可以利用4个颜色数值都等于4来排除不合理情况,当然也可以寻找适合的情况,看具体怎么实现更合理了,这个我没有细想。
#9
感觉比较难.想起来就觉得难.写出来更难.写出高质量的代码......
楼下的继续.
楼下的继续.
#10
晕了,不是数学天才,一看这就怕:(
#11
呵呵,看来 大家的感觉都还差不多呀!~
关键是怕....
关键是怕....
#12
给的数据有问题吧?
只考虑两个面的情况.例如选1里的R做正面,它的背面是B,那其它3个里
做为对面的必须有(R, B)或(B, R),考虑1里的其它两组也不满足。
只考虑两个面的情况.例如选1里的R做正面,它的背面是B,那其它3个里
做为对面的必须有(R, B)或(B, R),考虑1里的其它两组也不满足。
#13
这样可以吗?
先把每种颜色定义成一个数,所有颜色的数中的4个之和唯一。
对于 R B G Y B Y ,其中可以做上下面的一共三种情况 分别是 R :B G:Y B:Y 。这三种情况下,在确定上下面之后,其他四个面和四个方向一共有4种对应关系。因此现在共有12种对应关系;因为上下面可以颠倒,因此每个立方体可以有24种和空间方向的对应关系,把所有这些对应关系都放到一个两维数组中(其中最后两个放上下面的色彩),产生一个24*6的数组。
其它的也是这样,然后在数组里面寻找前所有4个数组的组合,让4个数组的一单元所有的数之和等于4种颜色之和,2单元,3单元,4单元之和都等于4种颜色之和。
不知道是否可行。
先把每种颜色定义成一个数,所有颜色的数中的4个之和唯一。
对于 R B G Y B Y ,其中可以做上下面的一共三种情况 分别是 R :B G:Y B:Y 。这三种情况下,在确定上下面之后,其他四个面和四个方向一共有4种对应关系。因此现在共有12种对应关系;因为上下面可以颠倒,因此每个立方体可以有24种和空间方向的对应关系,把所有这些对应关系都放到一个两维数组中(其中最后两个放上下面的色彩),产生一个24*6的数组。
其它的也是这样,然后在数组里面寻找前所有4个数组的组合,让4个数组的一单元所有的数之和等于4种颜色之和,2单元,3单元,4单元之和都等于4种颜色之和。
不知道是否可行。