51. N-Queens
Problem's Link
----------------------------------------------------------------------------
Mean:
N-Queen问题.
analyse:
dfs基本功.
Time complexity: O(N)
view code
1.第一发超时了,回过头来看看自己像shi一样的代码也是醉了.
);
);
; )) --x,++y;
while(x<n && y)
{
if(mat[x][y]=='Q' && (!(x==row && y==col)))
return false;
++x,--y;
}
return true;
}
void __init(int n)
{
res.clear();
mat=*(new vector<string>(n,string(n,'.')));
}
private:
vector<string> mat;
vector<vector<string>> res;
};
);
; )) --x,++y;
while(x<n && y)
{
if(mat[x][y]=='Q' && (!(x==row && y==col)))
return false;
++x,--y;
}
return true;
}
void __init(int n)
{
res.clear();
mat=*(new vector<string>(n,string(n,'.')));
}
private:
vector<string> mat;
vector<vector<string>> res;
};
2.优化了dfs调用和check()函数,效率提升了一个档次.
; ; ; ;; && j<n;--i,++j)
if(mat[i][j]=='Q')
return false;
return true;
}
void __init(int n)
{
res.clear();
mat=*(new vector<string>(n,string(n,'.')));
}
private:
vector<string> mat;
vector<vector<string>> res;
};
if(mat[i][j]=='Q')
return false;
return true;
}
void __init(int n)
{
res.clear();
mat=*(new vector<string>(n,string(n,'.')));
}
private:
vector<string> mat;
vector<vector<string>> res;
};