一個(gè)搜索的題目,不過肯定是要剪枝的

最簡單的兩個(gè)剪枝我想到了

第一個(gè):
首先,第一行已經(jīng)確定了,那么我們可以把第一列也確定,就按照升序,2,3,4,5……,這樣的話,沒生成這么一個(gè)square,我們就可以隨便的去交換除了第一行后面的幾行。

他們的一個(gè)全排列就對應(yīng)著一種組合,所以最后的答案乘以N-1的階乘就可以

第二個(gè):
這個(gè)其實(shí)是看來的,就是每次只要所搜完N-1行就可以了。因?yàn)槭O碌囊恍斜厝淮嬖谝粋€(gè)解。其實(shí)這個(gè)不難理解的,最后一行的排列順序只跟前面的每一列缺少的那個(gè)數(shù)有關(guān)。

而且也只能取缺少的那個(gè)數(shù),所以也就是唯一的。

第三個(gè):
要用到置換群,我沒看懂

盡管之前N次看組合數(shù)學(xué)里面都說到置換群,但是我還是似懂非懂,問了數(shù)學(xué)小王子,他也不是非常懂。然后以為這個(gè)東西沒用,就忽略了。沒想到還真的有用。