四皇后問(wèn)題

四皇后問(wèn)題
在一個(gè)4×4的國(guó)際象棋棋盤(pán)上痹换,一次一個(gè)地?cái)[放4枚皇后棋子泻帮,擺好后滿足每行精置、每列和對(duì)角線上只允許出現(xiàn)一枚棋子,即棋子間不許相互俘獲锣杂。

回溯策略
  • 是否是目標(biāo)狀態(tài)脂倦,是返回1
  • 循環(huán)規(guī)則集
  • 調(diào)用規(guī)則作用于當(dāng)前狀態(tài),生成新?tīng)顟B(tài)
  • 判斷當(dāng)前狀態(tài)是否合法
  • 合法則遞歸調(diào)用
  • 不合法取新的規(guī)則
代碼
#include<stdio.h>
/**
 *@function 檢測(cè)狀態(tài)是否合法
 *
 */
int Validate(int a[4][4], int i, int j) {
    
    int x, y;
    // 左上對(duì)角線是否存在皇后
    for(x = i - 1, y = j - 1; x >= 0 && y >= 0; x--, y--) {

            if(a[x][y] == 1) {

                return 0;
            }
    }
    // 右上對(duì)角線是否存在皇后
    for(x = i - 1,y = j + 1; x >= 0 && y < 4; x--,y++) {

            if(a[x][y] == 1) {

                return 0;
            }
    }
    // 所在列是否存在皇后
    for(x = i - 1; x >= 0; x--) {

        if(a[x][j] == 1) {

            return 0;
        }
    }
    return 1;
}
/*
 *@function 回溯
 *
 */
int Resolve(int a[4][4], int i) {
    
    int j, k;
    // 判斷是否為目標(biāo)狀態(tài)
    if(i == 4) {

        for(j = 0; j < 4; j++) {

            for(k = 0; k < 4; k++) {

                printf("%d ", a[j][k]);
            }
            printf("\n");
        }
        return 1;
    }
    // 循環(huán)規(guī)則集
    for(j = 0; j < 4; j++) {

        a[i][j] = 1;
        if(Validate(a, i, j)) {

            if(Resolve(a, i + 1)){

                a[i][j] = 0;
                printf("\n");
                continue;
            }
        }
        a[i][j] = 0;
    }
    return 0;
}
/*
 *@function 主函數(shù)
 *
 */
int main(int argc, char *argv[]) {

    int a[4][4];
    int i, j;
    for(i = 0; i < 4; i++) {

        for(j = 0; j < 4; j++) {

            a[i][j] = 0;
        }
    }
    Resolve(a, 0);
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末元莫,一起剝皮案震驚了整個(gè)濱河市赖阻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌踱蠢,老刑警劉巖火欧,帶你破解...
    沈念sama閱讀 212,222評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異茎截,居然都是意外死亡苇侵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)企锌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)榆浓,“玉大人,你說(shuō)我怎么就攤上這事撕攒“Ь” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,720評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵打却,是天一觀的道長(zhǎng)杉适。 經(jīng)常有香客問(wèn)我,道長(zhǎng)柳击,這世上最難降的妖魔是什么猿推? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,568評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮捌肴,結(jié)果婚禮上蹬叭,老公的妹妹穿的比我還像新娘。我一直安慰自己状知,他們只是感情好秽五,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著饥悴,像睡著了一般坦喘。 火紅的嫁衣襯著肌膚如雪盲再。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,879評(píng)論 1 290
  • 那天瓣铣,我揣著相機(jī)與錄音答朋,去河邊找鬼。 笑死棠笑,一個(gè)胖子當(dāng)著我的面吹牛梦碗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓖救,決...
    沈念sama閱讀 39,028評(píng)論 3 409
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洪规,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了循捺?” 一聲冷哼從身側(cè)響起斩例,我...
    開(kāi)封第一講書(shū)人閱讀 37,773評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巨柒,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體柠衍,經(jīng)...
    沈念sama閱讀 44,220評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洋满,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了珍坊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牺勾。...
    茶點(diǎn)故事閱讀 38,697評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阵漏,靈堂內(nèi)的尸體忽然破棺而出驻民,到底是詐尸還是另有隱情,我是刑警寧澤履怯,帶...
    沈念sama閱讀 34,360評(píng)論 4 332
  • 正文 年R本政府宣布回还,位于F島的核電站,受9級(jí)特大地震影響叹洲,放射性物質(zhì)發(fā)生泄漏柠硕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評(píng)論 3 315
  • 文/蒙蒙 一运提、第九天 我趴在偏房一處隱蔽的房頂上張望蝗柔。 院中可真熱鬧,春花似錦民泵、人聲如沸癣丧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,782評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胁编。三九已至厢钧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掏呼,已是汗流浹背坏快。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,010評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留憎夷,地道東北人莽鸿。 一個(gè)月前我還...
    沈念sama閱讀 46,433評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拾给,于是被迫代替她去往敵國(guó)和親祥得。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • N皇后問(wèn)題 以八皇后為例,在8×8格的國(guó)際象棋上擺放八個(gè)皇后蒋得,使其不能互相攻擊,皇后可以在其所在位置的對(duì)應(yīng)的行,列...
    Yihulee閱讀 2,345評(píng)論 0 2
  • 這兩天在寫(xiě)AI的課程實(shí)驗(yàn)额衙,趁剛剛完結(jié)實(shí)驗(yàn)代碼饮焦,腦海中還有些思路,在此簡(jiǎn)單總結(jié)一下窍侧。 目錄 問(wèn)題描述 關(guān)于N皇后問(wèn)題...
    chenjieping1995閱讀 4,037評(píng)論 0 5
  • 八皇后問(wèn)題:在8*8的棋盤(pán)上放置8個(gè)皇后县踢,保證任意兩個(gè)皇后之間不能相互攻擊。(即沒(méi)有兩個(gè)皇后是在同一行伟件、同一類硼啤、或...
    五秋木閱讀 705評(píng)論 0 0
  • 最近看了一些招聘崗位的要求,很多都有要了解MyBatis斧账。所以決定學(xué)習(xí)MyBatis谴返,我之前從未接觸過(guò),在這里記錄...
    無(wú)雜貨閱讀 347評(píng)論 0 0
  • 注:以下圖片素材皆來(lái)自于網(wǎng)絡(luò)。 “520”當(dāng)天最為搶鏡的就是林心如霍建華這一對(duì)新鮮出爐卻路人好感度極高的cp了习绢!而...
    娛樂(lè)圈老王閱讀 276評(píng)論 0 0