068.八皇后问题

举报
C语言与CPP编程 发表于 2022/05/01 23:04:41 2022/05/01
【摘要】 #include <math.h> #include <stdio.h> #define MAX 8 /* 棋子数及棋盘大小MAXxMAX */ int board[MAX]; /* 印出結果 */ void show_result() { int i; for(i=0;i<MAX;i++...
#include <math.h>
#include <stdio.h>
#define MAX 8 /* 棋子数及棋盘大小MAXxMAX */
int board[MAX];

/* 印出結果 */
void show_result()
{
    int i;
    for(i=0;i<MAX;i++)
	printf("(%d,%d)",i,board[i]);
    printf("\n");
}

/* 检查是否在同一直橫斜线上有其它棋子 */
int check_cross(int n)
{
    int i;
    for(i=0;i<n;i++){
	if(board[i]==board[n] || (n-i)==abs(board[i]-board[n]))return 1;
    }
    return 0;
}

/* 放棋子到棋盘上 */
void put_chess(int n)
{
    int i;
    for(i=0;i<MAX;i++){
	board[n]=i;
	if(!check_cross(n)){
	    if(n==MAX-1) show_result();/* 找到其中一种放法了...印出結果 */
	    else put_chess(n+1);
	}
    }
}

void main()
{
	clrscr();
	puts("The possible placements are:");
    put_chess(0);
    puts("\n Press any key to quit...");
	getch();
    return;
}

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124518187

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。