八皇后問題

int ans[12]; int N; void dfs(int row){ if(row == N){ for(int i = 0; i < N; ++i)cout << ans[i] << ' '; cout << endl; }else{ for(int i = 0; i < N; ++i){ ans[row] = i+1; bool good = 1;//檢查第i格能否擺放 for(int j = 0; j < row && good; ++j){ if(ans[j] == ans[row])good = false;//正上方&正下方 if(ans[j]-ans[row] == j-row)good = false;//左上方&右下方 if(ans[j]-ans[row] == -j+row)good = false;//右上方&左下方 } if(!good)continue; dfs(row+1); } } }