八皇后 深藏阁楼爱情的钟 2022-08-08 05:15 20阅读 0赞 # 编写出八皇后的算法->递归算法 # #include <stdio.h> int nCount=0; int noDanger(int row,int j,int (*chess)[8]){ int i=0,k=0; //判断每一行的指定列是否有皇后 for(i=0;i<8;i++){ if(chess[row][i]){ return 0; } } //判断左上方 for(i=row;i>=0;i--){ for(k=j;k>=0;k--){ if(chess[i][k]){ return 0; } } } //判断右下方 for(i=row;i<8;i++){ for(k=j;k<8;k++){ if(chess[i][k]){ return 0; } } } //判断右上方 for(i=row;i>=0;i--){ for(k=j;k<8;k++){ if(chess[i][k]){ return 0; } } } //判断左下方 for(i=row;i<8;i++){ for(k=j;k>=0;k--){ if(chess[i][k]){ return 0; } } } return 1; } void EightQueen(int row,int n,int(*chess)[8]){ int chess2[8][8];//临时数组 int i=0,j=0; for(i=0;i<8;i++){ for(j=0;j<8;j++){ chess2[i][j]=chess[i][j];//拷贝 } } if(row==8){ //表示排列完成 printf("%d\n",nCount++);//打印出第几组八皇后排列完成 for(i=0;i<8;i++){ for(j=0;j<8;j++){ printf("%d\t",chess2[i][j]); } printf("\n"); } }else{ //还必须革命努力 for(j=0;j<n;j++){ if(noDanger(row,j,chess)){ for(i=0;i<8;i++){ chess2[row][i]=0;//这一行都清0 } chess2[row][j]=1;//这一行这一列表示皇后占据 EightQueen(row+1,n,chess2); } } } } int main(){ int chess[8][8],i,j; //将数组进行初始化为0 for(i=0;i<8;i++){ for(j=0;j<8;j++){ chess[i][j]=0; } } EightQueen(0,8,chess); printf("一共 %d有多少种解决方法",nCount); }
相关 八皇后 八皇后问题介绍 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不 ゝ一世哀愁。/ 2022年12月24日 12:57/ 0 赞/ 123 阅读
相关 八皇后 八皇后 求解思路 可以将八皇后看成全排列问题,因为每次都是在某一行选择某个位置,所以不需要考虑行的问题。每次只需要求出当前行的棋子所在列。所以可以化为全排列问 左手的ㄟ右手/ 2022年10月01日 11:44/ 0 赞/ 172 阅读
相关 八皇后 / Queen 八皇后问题 :递归实现 1. 从第一行开始递归 2. 然后枚举当前行中的每一列, 3. 如果可以 r囧r小猫/ 2022年08月24日 14:25/ 0 赞/ 186 阅读
相关 八皇后 编写出八皇后的算法->递归算法 include <stdio.h> int nCount=0; int noDanger(int row,int 深藏阁楼爱情的钟/ 2022年08月08日 05:15/ 0 赞/ 21 阅读
相关 八皇后 八皇后问题是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇 女爷i/ 2022年07月29日 10:52/ 0 赞/ 207 阅读
相关 八皇后 package 搜索; import java.io.BufferedReader; import java.io.IOException; 一时失言乱红尘/ 2022年07月12日 12:14/ 0 赞/ 194 阅读
相关 八皇后问题 回溯法求解八皇后问题 n皇后问题:n皇后问题是指在一个n\n的国际象棋棋盘上放置n个皇后,使得这n个皇后两两不在同一行,同一列,同一条对角线上,求合法的方案数。 如 小灰灰/ 2022年06月11日 08:49/ 0 赞/ 274 阅读
相关 八皇后问题 枚举法 include<iostream> using namespace std; int a[9]; int check(int n, 蔚落/ 2022年06月06日 00:38/ 0 赞/ 230 阅读
相关 八皇后问题 在国际象棋中,皇后是最强大的一枚棋子,可以吃掉与其在同一行、列和斜线的敌方棋子.八皇后问题是这样一个问题:将八个皇后摆在一张8\8的国际象棋棋盘上,使每个皇后都无法吃掉别的皇 Bertha 。/ 2022年05月18日 05:58/ 0 赞/ 226 阅读
相关 八皇后问题 八皇后问题,以国际象棋为背景:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任意两个皇后都不能处于 叁歲伎倆/ 2021年09月25日 15:34/ 0 赞/ 460 阅读
还没有评论,来说两句吧...