LeetCode 51. N皇后
开始主要错误是从位置1开始放的,vector下标从0开始emmm
vector和string的构造函数使用
class Solution {
private:
int book[3][1000];
vector<vector<string>> ans;
void queen(int n,int cur,vector<int> &temp)
{
if(cur==n)
{
ans.push_back(combineAns(n,temp));
return;
}
for(int i=0;i<n;++i)
{
if(!book[0][i]&&!book[1][cur+i]&&!book[2][cur-i+n])
{
temp.push_back(i);
book[0][i]=book[1][cur+i]=book[2][cur-i+n]=1;
queen(n,cur+1,temp);
book[0][i]=book[1][cur+i]=book[2][cur-i+n]=0;
temp.pop_back();
}
}
}
vector<string> combineAns(int n,vector<int> &a)
{
vector<string> now(n,string(n,'.'));
for(int i=0;i<n;++i)
now[i][a[i]]='Q';
return now;
}
public:
vector<vector<string>> solveNQueens(int n) {
ans.clear();
memset(book,0,sizeof(book));
vector<int> temp;
queen(n,0,temp);
return ans;
}
};