栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > C++面试题库

八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已

八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已

八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已。(回溯算法的典型例题,是数据结构书上算法的具体实现,大家都亲自动手写过这个程序吗?)
#define N 8
int Board[N][N];
int Valid(int i, int j) {  // 判断下棋位置是否有效
 int k = 1;
 for(k=1; i>=k && j>=k;k++)
  if(Board[i-k][j-k]) return 0;
 for(k=1; i>=k;k++)
  if(Board[i-k][j])  return 0;
 for(k=1; i>=k && j+k<N;k++)
  if(Board[i-k][j+k]) return 0;
 return 1;
}

void Trial(int i, int n) {  // 寻找合适下棋位置
 if(i == n) {
  for(int k=0; k<n; k++) {
   for(int m=0; m<n; m++)
    printf(“%d “, Board[k][m]);
   printf(“n”);
  }
  printf(“n”);
 } else {
  for(int j=0; j<n; j++) {
   Board[i][j] = 1;
   if(Valid(i,j))
    Trial(i+1, n);
   Board[i][j] = 0;
  }
 }
}

int main(int argc, char* argv[]) {
 Trial(0, N);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/265484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号