我正在审查本地编程竞赛中的编程问题。
您可以下载问题http://www.vlaamseprogrammeerwedstrijd.be/2011/opgaves/cat2-2011/loodgieter.pdf。这是荷兰语,但图片将有助于理解它。
您收到一个m * m网格作为输入,包含一些管道和一些缺失点(问号)。其余的管道必须放在网格中,以便它们与其他管道连接。
每个管道都表示为一个字母(参见第2页的图片)。字母'A'的值为1,'B'的值为2,..
有人知道如何通过回溯Java来解决这个问题吗?
答案 0 :(得分:0)
我建议你收集所有关于游戏的知识:
选择一个描述拼图的表示,在每个单元格中都有所需的连接(已经放置的部分暗示)并且可以是一些可能连接或可能不连接的选项
编写放置处理程序,当一块放入棋盘时更新这些属性
创建逻辑,决定是否可以将某个部件放置在特定位置。
此时从空板开始并放置您知道的部件
开始递归,执行以下操作:
我希望你把它放在一起,这是一个很好的谜题, 请注意我每天都玩:daily expert netwalk,它有点类似于此,可以使用的启发式方法,也可以应用于此问题。