社区
C++ 语言
帖子详情
四色方柱问题求助!
MuFox
2005-04-23 11:17:23
设有4个立方体,每个六方体的每一面用红,黄,蓝,绿4种颜色之一染成。和们要把之4个立方体叠成一个方形柱体,使得柱体的4个侧面的每一侧均有4种不同的颜色。试设计一个回溯算法,计算出4个立方体的一种满足要求的叠置方案。
请各位大侠帮帮忙,写个算法出来!!
...全文
695
26
打赏
收藏
四色方柱问题求助!
设有4个立方体,每个六方体的每一面用红,黄,蓝,绿4种颜色之一染成。和们要把之4个立方体叠成一个方形柱体,使得柱体的4个侧面的每一侧均有4种不同的颜色。试设计一个回溯算法,计算出4个立方体的一种满足要求的叠置方案。 请各位大侠帮帮忙,写个算法出来!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuelong_zl
2005-04-26
打赏
举报
回复
这次成功
灌水不少
大家如果认为有什么不对请说出来一起讨论
xuelong_zl
2005-04-26
打赏
举报
回复
呵呵我也灌点水吧
事实上我感觉这个题如果用逆推想会好理解一些
现在设你已将这四个立方体组合成了一个方形柱体那你可以可以将它的侧面展开这样会形成一个4*4的方阵
上面说的应该可以理解吧
4*4方阵上每行的四个值相当于原小立方体的四个侧面的着色
列上的四个值就是表示四个小立方体合成方形柱体后柱体上某个侧面的着色了
这样就可以利用类似于N皇后的回溯算法的思路了
N皇后的要求是不能相互攻击
而这个题根据要求就是使每列上的着色值都不同
例如
数组第一行可任意写入数据我用1234代表不同的着色
1234//第一行
2341//第二行保证了列方向上没有相同的着色
2412//同上
4123//同上
这就是一个了
不知道自己说没说明白!!
Leaveye
2005-04-26
打赏
举报
回复
回溯时,甚至不用独立的数组,只需要四个储存i的空间就够了。
Leaveye
2005-04-26
打赏
举报
回复
根据立方体展开图,并编号如下:
⑹
⑷⑸
⑵⑶
⑴
则使数组与立方体建立映射。数组中保存⑴⑵⑶⑷⑸⑹⑴⑵⑶⑷⑸。
再将1固定为底面,2固定为正面,则数组与某确定位置的立方体建立映射。得到四个侧面的映射为2356。
之后,可以由输入的4x6数组作回溯。即可得到方案。
具体回溯算法的伪码大概是这样的(假定四个立方体已经完成输入):
⒈ 将第一个方块直接读入栈(每个栈单元是一个方块的数组);
⒉ 将下一个方块作为当前方块;
⒊ 令 i = 1;
⒋ 对当前方块,将第 i 个面开始的 6 个面作为一个方块入栈;
⒌ 若栈内所有方块的第 2、3、5、6 面没有相同的颜色,则跳转到8;
⒍ 出栈,并将 i 增一;
⒎ 若 i > 6 ,则为没有方案,返回失败;否则跳转到4;
⒏ 若当前方块是第四个方块,则做找到一个方案的处理;否则跳转到2;
⒐ 结束。
就这样。
fct0906
2005-04-25
打赏
举报
回复
这个问题关键就是用一种方法求出当一个立方体按照一个特定朝向摆好之后, 其它各个面对应于所要摆的柱体的哪个面的问题, 知道这种对应关系以后, 就可以得到各个面的颜色了, 然后进行回溯算法.
注意: 需要两个约束才能确定一个立方体的朝向.
MuFox
2005-04-25
打赏
举报
回复
。。。唉,没人9我!
lonenomad
2005-04-25
打赏
举报
回复
去掉的面,和顺逆时针。
mostideal
2005-04-25
打赏
举报
回复
mark
MuFox
2005-04-25
打赏
举报
回复
to:lonenomad(流浪汉)
需要哪两个约束条件?
various
2005-04-25
打赏
举报
回复
感觉题目有些不大清楚
pongba
2005-04-25
打赏
举报
回复
开玩笑吧老哥:-)用程序证明这个有意义吗?数学证明如下(初中证明):
条件:
PA+PB>=AB (三角形两边之和大于第三边)
AB=AC (等边三角形)
AC>=PC (大角对大边)
结论:
PA+PB >= PC (对于三角形内(含边界)上的点恒成立)
lonenomad
2005-04-25
打赏
举报
回复
装入时有两种情况,可以是顺时针,‘东南西北’,也可以是逆时针,‘东北西南’,这实际上是一个面朝上朝下的问题。
lonenomad
2005-04-25
打赏
举报
回复
首先、设有六个面,分别为东西、南北、上下。作三选一。有三种情况。将选后的结果放入一个数组(大小为4。比如选去,‘上下’,则剩余就是‘东南西北’,顺时针。面向你的这面为东。
第一层不动,第二层依上法选出、三四层同理选出。
然后开始转动。每层可转三次
找出符合条件的输出就可以了。
用穷偈法就可以了。不是很难,两个循环就可以了。
zhangfjj
2005-04-24
打赏
举报
回复
to joshion(紫晶) ( ) 信誉:100 2005-04-24 01:53:00 得分: 0
谁能帮我设计这个程序啊 ????(我真的很菜 帮帮我吧)
证明:一个等边三角形ABC,任意取一点P,都使得PB+PC>=PA.
==========
对呀,程序最多只能穷举,在等边三角形ABC中不存在这样一点,使得pb+pc<pa
如果是要任找一点p,使得PB+PC>=PA. 那倒还有可能!
icansaymyabc
2005-04-24
打赏
举报
回复
TO joshion(紫晶) : 你问的是一个数学问题,用数学来证明的。
用程序怎么能证明啊?
MuFox
2005-04-24
打赏
举报
回复
染色方案由人定,就是不管别人怎么染,输入之后,你输出符合要求的一组叠置方案就是了!
只见烟火飞扬
2005-04-24
打赏
举报
回复
是不是要求总共有多少种方案啊?不然的话,每个侧面,先随便选1色涂 立方体1,再在剩下的3色里选1色涂立方体2,剩下里选1色涂立方体3..,这样就可以输出了。应该没有什么别的要求了吧,随意选色时可以用随机函数rand()实现
MuFox
2005-04-24
打赏
举报
回复
如果每个立方体都涂一种颜色,那不用旋转了,随便叠一起就行了~
如果是随意给立方体染色呢?怎么才能输出符合要求的一组叠置方案!
joshion
2005-04-24
打赏
举报
回复
谁能帮我设计这个程序啊 ????(我真的很菜 帮帮我吧)
证明:一个等边三角形ABC,任意取一点P,都使得PB+PC>=PA.
帮我设计一下呀 !各位高手,不要看题目简单就不要回复
可以加我QQ63158556 然后回复我 谢谢了
只见烟火飞扬
2005-04-24
打赏
举报
回复
“四个立方体每一面都要染色,然后叠在一起,所得方柱的侧面都要有四种不同的颜色!”
题目是这样的吗?这样的话不是很简单:假设4个立方体都涂的一样,叠在一起,然后从上至下,
依次将4个立方体旋转0度,90度,180度,270度,就是每侧都4色的,每立方体也是4色的
加载更多回复(6)
n色
方柱
问题
《计算机算法设计与分析(王晓东)》课后5.7已经编译通过,完全正确。 n色
方柱
问题
n色
方柱
问题
N色
方柱
问题
该程序主要用来帮助那些不懂的人士,通过该文档可以基本的了解N色
方柱
问题
。
计算机算法设计实验报告(n色
方柱
问题
)
计算机算法设计完整实验报告,计算机算法设计实现题关于n色
方柱
问题
的实验报告。
用回溯法解决N色
方柱
对于计算机科学来说,算法(Algorithm)的概念是至关重要的。算法是一系列解决
问题
的清晰指令,也就是说,...为了充分理解算法分析的思想,利用算法思想解决实际
问题
,所以用回溯法解决书上P181习题5—7 n色
方柱
问题
。
LBM
方柱
绕流C++.docx
采用格子Boltzmann方法(LBM)对流体力学经典
问题
方柱
绕流进行分析计算,得出的数据可用后处理软件进行处理。本代码仅供学习之用,对于新手较为友好,如有
问题
,请指正。欢迎大家在评论区发言
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章