这个题好无趣,竟然输出解的个数。前一个题把全部解都输出出来了。还愁不知道解的个数吗。
。
我怀疑这个解的个数是有一个类似通项的东西,就上网查了一下。没有啊亲,最后就把上一题的代码略微改了一下过掉了。
class Solution { public: int totalNQueens(int n) { if(n == 0) return 0; int pos[n], res=0, start=0; bool flag, vis[n]; memset(pos, 0, sizeof(pos)); memset(vis, 0, sizeof(vis)); int i=0, j; while(i<n){ for(j=start;j<n;j++){ if(vis[j]) continue; flag = true; for(int k=0;k<i;k++){ if(abs(k-i) == abs(pos[k]-j)){ flag = false; break; } } if(!flag) continue; vis[j] = 1; pos[i] = j; break; } if(j == n){ --i; vis[pos[i]] = 0; start = pos[i]+1; if(i==0&&start>=n) break; continue; }else{ i++; start = 0; } if(i == n){ res++; --i; vis[pos[i]] = 0; start = pos[i]+1; if(i==0&&start>=n) break; } } return res; } };