在N*M的矩陣上,放置了L個軍艦,軍艦的左上角座標爲ux,uy,左下角座標爲dx,dy。軍艦是一個矩形。現在要放置第L+1個軍艦,但是軍艦不能重疊,並且上下左右,上左,上右,下左,下右都不能相鄰。求放置一個長爲p,寬爲q的軍艦的放置方案數(放置方案)。
2<=N,M<=30000,L<=30;
樸素的方法。對軍艦可以放置的位置進行枚舉,並且判斷每一個位置是否與其他軍艦衝突。時間複雜度爲O(MNL)
補集的方法。計算所有衝突的位置,用總放置方法減去,就是我們可以放的地方。時間複雜度爲(p^2*q^2*L^2)軍艦大小遠遠小於M,N,
該方法提高了時間效率
代碼如下