N queens
来源:互联网 发布:服务器机柜和网络机柜 编辑:程序博客网 时间:2024/05/22 03:33
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
class Solution {public: bool isValid(vector<string>& board, int n,int x, int y){int i =0, j =0;for(i=0; i < x; ++ i){if(board[i][y] == 'Q')//只可能是x之前的行,在同一列有相同的元素return false;}for(i = 0; i < n; ++ i)for(j = 0; j < n; ++j){if( (i != x)&& (j != y) && board[i][j] == 'Q' && (((x-i) == (y-j)) || ((x-i) == (j-y))))//对角线,左边或者是右边return false;} return true;}void dfsBoards(vector<vector<string> >& results,vector<string>& board, int n, int id){int i = 0;if(id == n){results.push_back(board);return;}for(i = 0; i < n; ++ i){board[id][i] = 'Q';//在每id行插入元素Qif(isValid(board,n,id,i)){dfsBoards(results,board,n,id+1);}board[id][i] = '.';}}vector<vector<string> > solveNQueens(int n) {vector<vector<string> > results;//存放最终多个方案vector<string> board;//其中一个方案string row = "";int i = 0;if(n == 0) return results;if(n == 1) {board.push_back( "Q");results.push_back(board);return results;}for(i = 0; i < n; ++ i)row.push_back('.') ;for(i = 0; i < n; ++ i)board.push_back(row);dfsBoards(results,board,n,0);return results;}};
Convert Sorted Array to Binary Search Tree
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* sortedArrayToBSTR(vector<int>& num, int start,int end){if(start > end)return NULL;int mid = (start+end)/2;TreeNode* r = new TreeNode(num[mid]);r->left = sortedArrayToBSTR(num, start, mid-1);r->right = sortedArrayToBSTR(num, mid+1, end);return r;}TreeNode *sortedArrayToBST(vector<int> &num){TreeNode* root = sortedArrayToBSTR(num,0, num.size()-1);return root;}};
Balanced Binary Tree
这个方法要自顶往下,节点是否平衡会先计算子树,然后判断,接着再次判断子树是否平衡,重复计算,不高效
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:int TreeDepth(TreeNode* node){ if(node == NULL) return 0; int hleft = TreeDepth(node->left); int hright = TreeDepth(node->right); return hleft>hright?(hleft+1):(hright+1);}bool isBalanced (TreeNode* root){ if(root == NULL) return true; int left = TreeDepth(root->left); int right = TreeDepth(root->right); int dif = left - right; if(dif>1 || dif<-1) return false; return isBalanced(root->left)&&isBalanced(root->right);}};
还有一种,键指offerP207,就是后序遍历,保证左右子树都是平衡的再去判断自身的平衡性,避免了重复计算
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:bool isBalanced(TreeNode* node, int *dep){ if(node == NULL) { *dep = 0; return true; } int left=0; int right = 0; if(isBalanced(node->left,&left) && isBalanced(node->right,&right)) { int dif = left -right; if(dif<=1 && dif>=-1) { *dep = 1+(left>right?left:right);//优先级的问题,我写的是(left>right)?left:right,应该是?优先级太低 return true; } } return false;}bool isBalanced (TreeNode* root){ int dep = 0; return isBalanced(root,&dep);}};
Swap Nodes in Pairs
struct ListNode{int val;ListNode *next;ListNode(int x):val(x),next(NULL){}};ListNode* swapPairs(ListNode* head){if(head == NULL || head->next == NULL)return head;ListNode* p = head;ListNode* q = head->next;p->next = q->next;q->next = p;head = q;while(p->next != NULL && p->next->next != NULL){//p记录的是pair的前一个节点,所以是移动两步q = p->next->next;//pair间交换p->next->next = q->next;q->next = p->next;//pair与前一个节点p连接p->next = q;//移动两步,p指向下一个pair的前一个p = p->next->next;}return head;}
0 0
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- N-Queens
- 域名解析和cdn 原理
- 在Windows下使用LoadLibrary导入自定义的DLL出现998错误
- poj3267
- 3293. A Sequence of Numbers
- Linux TCP调试利器 - nc
- N queens
- asp.net中使用ajax的两种方式
- Java初学札记step by step(一)
- R逻辑回归与CTR预估
- GhostDoc使用与原始注释
- 《Linux设备驱动开发详解》——I2C核心、总线与设备驱动
- [LeetCode]Merge Sorted Array
- 我的CSDN博客世界:欢迎切磋和交流
- HDU 4417 Super Mario