必须用C或C++,用图结构和DFS解决8皇后问题,需要思路或者算法设计,刚学数据结构这门课,有些问题不会
3条回答 默认 最新
devmiao 2016-01-01 08:07关注#include <iostream> #include <math.h> #include <stdio.h> #include <string.h> using namespace std; int mat[8][8]; int ans = 0; bool check(int row,int col) { for(int i=0;i<row;i++) { //不能同列 if(mat[i][col]) { return false; } //不能在同一对角线 for(int j=0;j<8;j++) { if(mat[i][j]) { if( fabs(i - row) - fabs(j - col) == 0) { return 0; } else { break; } } } } return true; } int dfs(int row) { if(row>=8) { ans++; for(int i=0;i<8;i++) { for(int j=0;j<8;j++) { printf("%d ",mat[i][j]); } printf("\n"); } printf("\n"); } for(int col=0;col<8;col++) { if(check(row,col)) { mat[row][col] = 1; dfs(row + 1); mat[row][col] = 0; } } } int main() { memset(mat,0,sizeof(mat)); dfs(0); printf("total = %d\n",ans); return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报