| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5714 人关注过本帖, 1 人收藏
标题:瓷砖覆盖地面问题
只看楼主 加入收藏
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
这是按列来判断是否铺砖的吧,为什么要n*(2^10 - 1)次循环呢?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-17 21:08
hxjhzyf
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-11-17
收藏
得分:0 
这可以认为是一个遍历问题。假设用黑白两色把每块相邻的砖都染上不同的颜色,那么就得到一个黑白相间的类似国际象棋的棋盘格式。从任意一个点出发,最终不重复的走完所有格子的就是一种可行的算法(其中12铺一块砖,34铺一块砖,等等)。
至于上面问题的解法就用老鼠走迷宫的算法就可以实现,遍历每一条可行的路径,如果最终能毫无重复的走完就是一种可行的方法。

[ 本帖最后由 hxjhzyf 于 2011-11-17 21:16 编辑 ]
2011-11-17 21:10
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
外层循环是按行铺,dfs函数是对某一行按列铺
2011-11-17 21:11
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
回复 42楼 hxjhzyf
那样算法时间复杂度大概为2^(nm),当n=m=10时,电脑得算n光年才能算出答案,这种枚举搜索一般确实能解决大部分问题,但都存在效率不高的问题
2011-11-17 21:13
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
还有一个问题,为什么f[i][j] == 0就没有判断的意义?

再来纠正一下,光年是距离单位!

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-17 21:16
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
。。。。我随口说的,我知道

因为如果f[i][j]==0,计算搜到下一行的状态f[i+1,S],执行f[i+1][S]+=f[i][j],这是没有意义的,因为f[i][j]==0,这是一个无法达到的状态
2011-11-17 21:18
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
我大致明白了,主函数的两层for循环是对每一行,当前行的每一种状态都进行一次判断
dfs中的now和next仅表示当前行和下一行的状态,所以在主函数中才会出现这种调用dfs (0, j, 0),因为开始判断时必然从第0列开始判断,而j是当前行的状态,0是下一行的状态,由于下一行还未到,所以必然为0.
然后dfs中假设了每次铺砖后当前行和下一行的状态,并把要判断的列位,也就是dep向后移,因为当dep后移的时候,第dep位必然已经铺好砖了,当dep到最后的时候,就表示这一行已经铺满了,可以把结果加进总数中去了。
我的理解对吗?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-17 21:40
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
恩,基本是这样
2011-11-17 21:42
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
好的,谢谢你的解释,等结贴的时候会把分给你的。现在看看其他人的看法吧。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-11-17 21:49
zxc1989
Rank: 2
等 级:论坛游民
帖 子:15
专家分:45
注 册:2011-11-15
收藏
得分:0 
能不能把全部的代码都写出来啊,让我们看看运行看看呗
2011-11-18 15:45
快速回复:瓷砖覆盖地面问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016330 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved