原題鏈結
八皇后,一道非常經典的老題了
但是今天要用位運算優化,老實說一開始有點難理解
實際上現在也暈暈乎乎的,因為實在是位運算苦手……不難但是就是反應不過來,「誒這個符號是……啊啊想起來了!」「不對現在講到哪了[驚]」「雖然知道了這個符號是幹什麼的……還是看不懂orz」
差不多是明白了要幹什麼,總之就是朝著不能放皇后的列標記標記標☆
洛谷上的題還要求輸出方案,稍微折騰了一下
總之我討厭位運算(╯>д<)╯┻━┻
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
int n,uplimit,ans,que[20],t;
void dfs(int m,int ld,int rd)
t++;
que[t]=v;
dfs(m+p,(ld+p)<<1,(rd+p)>>1);
t--;}}
else
return;
}}int main()
P1219 八皇后 含優化 1 5
檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 4 6 1...
題解 P1219 八皇后
寫在前面 第一次認真寫題解qwq求讚 我初學dfs時遇到的第一題應該就是這道吧 本文面向初學者,說的較為詳細 側重於作者的做題過程 我相信很多人都會像我一樣去做 列舉每一行的皇后的位置即可 對角線的處理非常令人迷茫 一開始,我興奮地打了這樣乙個 用二維陣列vis標記一下能不能放不就好了嗎?看題解說的...
搜尋 P1219 八皇后
檢查乙個如下的6 x 6的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行 每列有且只有乙個,每條對角線 包括兩條主對角線的所有平行線 上至多有乙個棋子。上面的布局可以用序列2 4 6 1 3 5來描述,第i個數字表示在第i行的相應位置有乙個棋子,如下 行號 1 2 3 4 5 6 列號 2 4 6 1...