• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: C/C++
  • 标签: 五皇后  c语言  

资源简介

c语言实现5皇后问题,控制台画出5个皇后控制全局,互不相吃的全部摆法

资源截图

代码片段和文件信息

/*
* 文件名称: 五皇后问题
* 问题描述: 在 8X8 棋盘放置五个皇后 按国际象棋规则判定 
*   1.五个皇后不能相互吃
*   2.五个皇后要控制整个棋盘
* 完成日期: 2016/1/8
*/

#include 


char qi_pan[64];
char quen[5];
int road_sum;


//////////////////////////////////////第一部分:合理性判定///////////////////////////////////////////
/*
* 函数介绍: 查看某一位置是否被某一皇后控制
* 输入参数: *q 被查看的皇后地址 该地址存放了该皇后在棋盘中的位置
*   loca 要查看的位置
* 输出参数: 无
* 返回值  : 返回1  则受控  0 不受控
*/
char con_by (char *qchar loca) 
{

//////////////是否在quen控制的行上
if(loca/8 == (*q)/8)
{
return 1;              /////////////只要被任意一个控制就表明被控制了
}

////////////////是否在控制的列上
if(loca%8 == (*q)%8)
{

return 1;
}
//////////////////是否在一边的斜线上
if(    ((loca/8)-((*q)/8)) == ((loca%8)-(*q)%8)   )//斜线的判断采用  dx/dy == 1的方法
{

return 1;
}
///////////////////是否在另一边的斜线上
if(((loca/8)-((*q)/8)) == (((*q)%8) - (loca%8))) //另一边斜线  dx/dy == -1
{
return 1;
}

return 0;  //全部不受控才不受控

}


/*
* 函数介绍: 查看某一位置是否是否被至少一个控制
* 输入参数:  loca 要查看的位置
* 输出参数: 无
* 返回值  : 返回1  则受控  0 不受控
*/

char con_ed (char loca)
{
if((con_by(quenloca) + con_by(quen + 1loca) +con_by(quen + 2loca) +con_by(quen +3loca) +con_by(quen+4loca)) > 0)
return 1;
return 0;
}


/*
* 函数介绍: 判断是否全局都被控制
* 输入参数: 无
* 输出参数: 无
* 返回值  : 返回1  则受控  0 不受控
*/

char judge (void)
{
char i;
for(i = 0; i < 64; i++)
{
if(con_ed(i) == 0)
return 0;
}
return 1;
}








//////////////////////////////////////第一部分:画出棋盘///////////////////////////////////////////
/*
* 函数介绍: 初始化棋盘  清零qi_pan []
* 输入参数: 无
* 输出参数: 无
* 返回值  : 无
*/
void clr (void)
{
char i;

for(i = 0; i < 64; i++)
{
*(qi_pan + i) = 5; /////////////初始化棋盘  初始值是5

}
}

/*
* 函数介绍: 画出棋盘  更新已经找出的摆法
* 输入参数: 无
* 输出参数: 棋盘   已经找出的摆法  五个皇后的位置
* 返回值  : 无
*/
void show (void)
{
char i;

for(i = 0;i < 5; i++)
{
*(qi_pan + quen[i]) = 6; //

评论

共有 条评论