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