52. N-Queens II
2017-02-02 01:29
309 查看
1刷
没啥好说的。看回51吧,一个样
2刷
没啥好说的。看回51吧,一个样
class Solution { public: vector<string>ntemp; vector<vector<int> >visit; vector<vector<string> >outcome; int temp = 0; void changevisit0(int a, int b, int n){ for(int i = 0; i < n; ++ i){ visit[a][i] --; visit[i][b] --; } visit[a][b]++; for(int i = 1; a + i < n && b + i < n; ++ i) visit[a + i][b + i] --; for(int i = 1; a - i >= 0 && b - i >= 0; ++i) visit[a - i][b - i] --; for(int i = 1; a - i >= 0 && b + i < n; ++ i) visit[a - i][b + i] --; for(int i = 1; a + i < n && b - i >= 0; ++ i) visit[a + i][b - i] --; } void changevisit1(int a, int b, int n){ for(int i = 0; i < n; ++ i){ visit[a][i] ++; visit[i][b] ++; } visit[a][b]--; for(int i = 1; a + i < n && b + i < n; ++ i) visit[a + i][b + i] ++; for(int i = 1; a - i >= 0 && b - i >= 0; ++i) visit[a - i][b - i] ++; for(int i = 1; a - i >= 0 && b + i < n; ++ i) visit[a - i][b + i] ++; for(int i = 1; a + i < n && b - i >= 0; ++ i) visit[a + i][b - i] ++; } void dfs(int a, int b, int n, int num){ if(a == n) return ; ntemp[a][b] = 'Q'; changevisit1(a, b, n); if(num + 1 == n){ //outcome.push_back(ntemp); temp++; } else for(int i = 0; i < n; ++ i) if(visit[a + 1][i] == 0) dfs(a + 1, i, n, num + 1); ntemp[a][b] = '.'; changevisit0(a, b, n); return ; } int totalNQueens(int n) { string s = ""; for(int i = 0; i < n; ++ i) s += "."; for(int i = 0; i < n; ++ i) ntemp.push_back(s); vector<int>u; for(int i = 0; i < n; ++ i) u.push_back(0); for(int i = 0; i < n; ++ i) visit.push_back(u); for(int i = 0; i < n; ++ i){ dfs(0, i, n, 0); for(int j = 0; j < n; ++ j) for(int k = 0; k < n; ++ k){ visit[j][k] = 0; ntemp[j][k] = '.'; } } return temp; } };
2刷
class Solution { public: void solve(int& sum, vector<string>& vec, vector<int>& flag, int row, int n){ if(row == n){ sum++; return ; } for(int i = 0; i < n; ++i) if(flag[i] && flag[n + row + i] && flag[4 * n - 2 + i - row]){ flag[i] = flag[n + row + i] = flag[4 * n - 2 + i - row] = 0; vec[row][i] = 'Q'; solve(sum, vec, flag, row + 1, n); vec[row][i] = '.'; flag[i] = flag[n + row + i] = flag[4 * n - 2 + i - row] = 1; } } int totalNQueens(int n) { int sum = 0; vector<string>vec(n, string(n, '.')); vector<int>flag(5 * n - 2, 1); solve(sum, vec, flag, 0, n); return sum; } }; class Solution { public: int maxSubArray(vector<int>& nums) { int maxx = INT_MIN; int sum = 0; for(int i = 0; i < nums.size(); ++ i){ sum += nums[i]; if(sum > maxx) maxx = sum; if(sum < 0) sum = 0; } return maxx; } };
相关文章推荐
- 51. N-Queens && 52. N-Queens II
- 52. N-Queens II
- 个人记录-LeetCode 52. N-Queens II
- leetcode 52. N-Queens II
- Leetcode 52. N-Queens II
- LeetCode 52. N-Queens II
- LeetCode 52. N-Queens II
- 52. N-Queens II
- leetcode 52. N-Queens II
- LeetCode | 52. N-Queens II 经典算法n后问题回溯法
- 【LeetCode】52. N-Queens II
- LeetCode 52. N-Queens II
- 52. N-Queens II
- LeetCode 52. N-Queens II
- leetcode-52. N-Queens II
- 52. N-Queens II
- 【LeetCode】52.N-Queens II(hard)解题报告
- [Leetcode] 52. N-Queens II
- <LeetCode OJ> 52. N-Queens II
- 【一天一道LeetCode】#52. N-Queens II