我正在寻找关于为什么这个问题有偶数个解决方案的指导:
一个怪人有他自己的野生动物收藏,包括熊,狮子,老虎,大象,狼獾,犀牛和野狗。这7只动物构成了他的危险动物收藏,被安置在7个动物围栏中,这些动物围栏排成一排,最左边的围栏是1号,最右边的围栏是7号围栏。
这些动物中的一些相互激荡,因此男人决定他必须将以下两对动物分开:
-the熊和狼獾-the犀牛和野狗-the狮子和老虎-the熊和大象-the大象和野狗-the大象和熊
如果两个动物不相邻,也就是说,如果它们之间有另一个围栏,那么它们是分开的。所有的动物必须被放在不同的围栏里。
我想知道为什么这个问题总是有偶数个解决方案?据我所知,约束问题通过对称性提高了效率--也就是说,你可以很容易地交换围栏中的动物,只要它是对称的,就可以得到不同的解决方案。但我不太理解这一点,如果有人能提供一个更清楚的解释,那将是非常有帮助的。提前谢谢你。
发布于 2014-05-23 00:29:32
你需要更精确地定义“解决方案的数量”。比方说,你有N个解决方案,将熊分配给最左边(或第一个)的笔。通过左右颠倒(将熊分配给最后一支笔),你可以得到两倍的解决方案。两倍的数字总是可以被两个整除。
发布于 2014-08-11 16:59:02
因为您只提供了其中一对的两次(大象和熊+熊和大象)。也就是说,您要么在代码中排除了其他对,要么添加了一个不可预测的额外约束。要么将它们全部提供,要么编写正确的代码,不排除每一对中的相反部分。
https://stackoverflow.com/questions/23811977
复制相似问题