資源簡介
c語言實現(xiàn)5皇后問題,控制臺畫出5個皇后控制全局,互不相吃的全部擺法
代碼片段和文件信息
/*
* 文件名稱:?五皇后問題
* 問題描述:?在?8X8?棋盤放置五個皇后?按國際象棋規(guī)則判定?
* ??1.五個皇后不能相互吃
* ??2.五個皇后要控制整個棋盤
* 完成日期:?2016/1/8
*/
#include?
char?qi_pan[64];
char?quen[5];
int?road_sum;
//////////////////////////////////////第一部分:合理性判定///////////////////////////////////////////
/*
* 函數(shù)介紹:?查看某一位置是否被某一皇后控制
* 輸入?yún)?shù):?*q?被查看的皇后地址?該地址存放了該皇后在棋盤中的位置
* ??loca?要查看的位置
* 輸出參數(shù):?無
* 返回值??:?返回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;??//全部不受控才不受控
}
/*
* 函數(shù)介紹:?查看某一位置是否是否被至少一個控制
* 輸入?yún)?shù):??loca?要查看的位置
* 輸出參數(shù):?無
* 返回值??:?返回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;
}
/*
* 函數(shù)介紹:?判斷是否全局都被控制
* 輸入?yún)?shù):?無
* 輸出參數(shù):?無
* 返回值??:?返回1??則受控??0?不受控
*/
char?judge?(void)
{
char?i;
for(i?=?0;?i?64;?i++)
{
if(con_ed(i)?==?0)
return?0;
}
return?1;
}
//////////////////////////////////////第一部分:畫出棋盤///////////////////////////////////////////
/*
* 函數(shù)介紹:?初始化棋盤??清零qi_pan?[]
* 輸入?yún)?shù):?無
* 輸出參數(shù):?無
* 返回值??:?無
*/
void?clr?(void)
{
char?i;
for(i?=?0;?i?64;?i++)
{
*(qi_pan?+?i)?=?5;?/////////////初始化棋盤??初始值是5
}
}
/*
* 函數(shù)介紹:?畫出棋盤??更新已經找出的擺法
* 輸入?yún)?shù):?無
* 輸出參數(shù):?棋盤???已經找出的擺法??五個皇后的位置
* 返回值??:?無
*/
void?show?(void)
{
char?i;
for(i?=?0;i?5;?i++)
{
*(qi_pan?+?quen[i])?=?6;?//
評論
共有 條評論