本文主要介紹頭銜:女王角(queen),下面一起看看頭銜:女王角(queen)相關(guān)資訊。
52.n皇后iin的問題,研究如何把n個(gè)皇后放到n × n的棋盤上,防止皇后互相攻擊。
給你一個(gè)整數(shù)n,返回n皇后問題不同解的個(gè)數(shù)。
示例1:
輸入:n = 4輸出:2解釋:如上圖所示,皇后4問題有兩種不同的解法。示例2:
輸入:n = 1輸出:1提示:
1 = n = 9思路:
經(jīng)典女王n,不變,
類解{public: int sum = 0;//方案數(shù)int total n queen(int n){//n queen從返回解的個(gè)數(shù)變成了返回解的個(gè)數(shù)。使用 。 表示棋盤 問與答。;來表示棋子vectorstringboard(n,string(n, 。 ));回溯(board,0);返回總和;} void backtrack(vector string board,int i){ if(i = = board . size){ sum;返回;} for(int j = 0;jboard . size;j ){ if(!isvalid(board,i,j)){//棋子非法擺放,don t選擇繼續(xù);}//做出選擇board[i][j]= ;問與答。;;回溯(板,i 1);//取消選擇board[i][j]= ;。 ;} } bool is valid(vector string board,int row,int col){ int n = board . size;//檢查該列是否有(int i = 0;irowi){ if(board[i][col]= = ;問與答。;)返回false}//檢查右上角for (int i = row-1,j = col 1;i = 0j n;i -,j){ if(board[i][j]= = ;問與答。;)返回false}//檢查左上角for (int i = row-1,j = col-1;i = 0j = 0;i -,j-){ if(board[i][j]= = ;問與答。;)返回false}返回true}};標(biāo)簽:
皇后溶液
了解更多頭銜:女王角(queen)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。