由买买提看人间百态

topics

全部话题 - 话题: nqueen
(共0页)
s*****1
发帖数: 134
1
弱问各位大牛,leetcode上两道NQueen好像做法差不多啊,我用做一的方法用到二上去
,也能通过,有没有‘二’的优化版本?就是明显‘一’的做法做不了的?
谢谢啦!
f*******b
发帖数: 520
2
刚利用吃饭时间做了一题NQueens,第一次做,没任何compile和runtime error,直接过
大小数据,很高兴!从第1题做到现在第51题,很高兴能看到自己的进步。题越刷越好
了。
h*******e
发帖数: 1377
3
我的感觉似乎是这样的,如果不对各位大牛请指正,nqueen 有普通做法,普通做法,
sum 比 求 nqueen 打印path 要简单。。 有适用 最大63位的 queen的 位运算,
用数字存储
状态,然
后递归,这样的算法 sum 会比普通sum做法快 但是 nqueen 的位运算 path全打出算法
,在计
算 当前行占用位置的皇后时候用了循环 增加了时间并不如 nqueen求全部path的 普通
算法更优化。。所以 nqueen path 全打出算法 不使用位运算。。这样 sum 是位运算
path 全打出是普通算法。。所以 sum 算法相对比较难, 思路难调试也不好调,但是
程序速度快。位运算求最右1 的位置 也不好想。当时我认为求sum 比 求全部路径全打
出难基本就是这个原因。当然要是真正面试 为运算 我如果真要用需要扩展~~~就是所
有的位要用 数组存 可以控制64*sizeArr 个状态 我还没有写扩展到64位以上的算法
。。而且不打算面试时候用这个给人家讲~~~63以下位数皇后是可以很好很快很优
美的解决的。
H******7
发帖数: 1728
4
class Solution {
public:
int res;

bool isValid(int A[], int r){
for (int i=0;i if ( (A[i]==A[r])||(abs(A[i]-A[r])==(r-i))){
return false;
}
}
return true;
}
void nqueens(int A[], int cur, int n){
if (cur==n){ res++;return;}
else{
for (int i=0;i A[cur]=i;
if (isValid(A,cur)){
nqueens(A,cur+1,n);
}
... 阅读全帖
f*****e
发帖数: 2992
5
来自主题: JobHunting版 - N queen problem 很难想啊
nqueen leetcode 20ms 算慢还是快?nqueen II 300ms
class Solution {
public:
void f(int n, int j, int *p1, int *p2, int *p3, vector >&
vvs){
for(int i = 0; i < n; i++){
if( p1[i] < j || p2[j + i] < j || p3[n - 1 + j - i ] < j) continue;
else {
p1[i] = j;
p2[j + i] = j;
p3[n - 1 + j - i] = j;
if(j == n - 1){
vector vs(n);
string temp(n,'.');
for(int k = 0; k < n; k++){
temp[k] = 'Q';
... 阅读全帖
l****i
发帖数: 230
6
有人问nqueens,我的解法就是暴力解法,用recuisive直接搜索
不知道有没有更好的办法
一会贴code

数目
l****i
发帖数: 230
7
贴一下自己的code
BTW,我虽然是CS的PHD但自己本科硕士都不是CS,所以coding很烂,不是什么大牛,跟
版上很多人比差距不小,说一下这个也权当是对大家的鼓励吧
int nQueens(int n){
if(n<=0) return 0;
int *placement = new int[n];
assert(placement);
int cnt = nQueensHelper(placement, n, 0);
delete[] placement;
return cnt;
}
int nQueensHelper(int *placement, int sz, int curr){
if(curr>=sz) return 1;
int cnt = 0;
for(int i=0; i placement[curr] = i;
if(validatePlacement(placement, sz, curr))
cnt += nQueensHelper(placement, sz, c... 阅读全帖
h*******e
发帖数: 1377
8
不会因为之前有个islower是c函数保证肯定是小写字母否则无法进条件判断。你那个
sum 为什么复杂那个我再看看,在答复 , 我好长时间之前写的,当时记得sum 比较复
杂,,nQueen 我写了6,7个版本,有的还比较容易忘, 等我慢慢看看这些回想一下的
l*******b
发帖数: 2586
s*****1
发帖数: 134
10
hi,谢谢,试过了,很有用~
f*********r
发帖数: 85
11
哈哈,比较运气,他问我熟不熟nqueens,然后我说用stack + DFS,这题我做TA的时候
讲过,于是面试官就说never mind move on了
y***u
发帖数: 205
12
nqueen就比permutation多一个对角线的check,然后都是暴力搜索就行吧?
I**********a
发帖数: 1183
13
来自主题: JobHunting版 - Yelp phone + onsite面经
感觉和NQueens一样的思路? 对每一门课,遍历每一个时间段,如果当前不冲突,就
recursive下一门课。 这种解法叫什么? 是楼主说的dfs吗? 还是backtracing? 还
是一个东西两种叫法?
还有更好的解法吗?
(共0页)