我正在寻找关于为什么这个问题有偶数个解决方案的指导:
一个古怪的人有他自己的个人野生动物收藏,包括熊,狮子,老虎,大象,狼獾,犀牛和野狗。这7只动物构成了他的危险动物收藏,它们被安置在7个动物围栏中,这些围栏排成一排,最左边的围栏是1号,最右边的围栏是7号。
这些动物中有一些相互鼓动,因此男子决定他必须把以下几对动物分开:
-熊和狼獾-犀牛和野狗-狮子和老虎-熊和大象-大象和野狗——大象和熊如果两个动物不相邻,也就是说,如果它们之间有另一个围栏,则它们是分开的。所有的动物必须放在不同的围栏里。
我想知道为什么这个问题总是有偶数个解决方案?根据我的理解,约束问题通过对称获得效率——也就是说,你可以很容易地交换围栏里的动物,只要它是对称的,就能得到不同的解决方案。但我不太明白如果有人能提供一个更清晰的解释,那将非常有帮助。提前谢谢你。
您需要更精确地定义'解决方案的数量'。比如说,你有N个解决方案,将熊分配到最左边(或第一支)笔。通过左右颠倒(将熊分配到最后一支笔),你可以得到两倍的答案。两倍的数总是能被2整除
因为您只提供了其中的一对(大象和熊+熊和大象)。也就是说,要么在代码中排除其他对,要么添加不可预测的额外约束。要么提供它们全部,要么编写正确的代码,在每一对中不排除相反的