lintcode-34-N皇后问题 II
生活随笔
收集整理的這篇文章主要介紹了
lintcode-34-N皇后问题 II
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
34-N皇后問題 II
根據n皇后問題,現在返回n皇后不同的解決方案的數量而不是具體的放置布局。
樣例
比如n=4,存在2種解決方案
標簽
遞歸
思路
參考http://www.cnblogs.com/libaoquan/p/7073252.html
code
class Solution { public:/*** Calculate the total number of distinct N-Queen solutions.* @param n: The number of queens.* @return: The total number of distinct solutions.*/int totalNQueens(int n) {// write your code hereif(n == 1) {return 1;}else if(n < 4) {return 0;}int result = 0;int i=0, row=0, col=0, j=0, k=0;int *pCheckerboard = new int[n];for(i=0; i<n; i++) {pCheckerboard[i] = -1;}while(row < n) {while(col < n) {if(canPlace(row, col, n, pCheckerboard)) {pCheckerboard[row] = col;col = 0;break;}else {col++;}}if(pCheckerboard[row] == -1) {if(row == 0) {break;}else {row--;col = pCheckerboard[row] + 1;pCheckerboard[row] = -1;continue;}}if(row == n-1) {result++;col = pCheckerboard[row] + 1;pCheckerboard[row] = -1;continue;}row++;}delete[] pCheckerboard;return result;}int canPlace(int row, int col, int n, int *pCheckerboard) {int i;for(i=0; i<n && i!=row; i++) {if(pCheckerboard[i] == col) {return 0;}if(abs(row-i) == abs(col-pCheckerboard[i])) {return 0;}}return 1;} };轉載于:https://www.cnblogs.com/libaoquan/p/7074212.html
總結
以上是生活随笔為你收集整理的lintcode-34-N皇后问题 II的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Golang] 从零開始写Socket
- 下一篇: 有没有灵通英语第五册(七年级)这本书?