• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            統(tǒng)計(jì)

            • 隨筆 - 50
            • 文章 - 42
            • 評(píng)論 - 147
            • 引用 - 0

            留言簿(6)

            隨筆分類(lèi)

            文章分類(lèi)

            Link

            搜索

            •  

            積分與排名

            • 積分 - 166403
            • 排名 - 159

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            八皇后問(wèn)題一解--用幾何方法簡(jiǎn)化編程問(wèn)題

            在一個(gè)8×8國(guó)際象棋盤(pán)上,有8個(gè)皇后,每個(gè)皇后占一格;要求皇后間不會(huì)出現(xiàn)相互“攻擊”的現(xiàn)象,即不能有兩個(gè)皇后處在同一行、同一列或同一對(duì)角線(xiàn)上。問(wèn)共有多少種不同的方法。
            這是一個(gè)古老的問(wèn)題,解法分很多種,串行,并行,遞歸,循環(huán),等等
            不過(guò)我認(rèn)為這道題目的真正難點(diǎn)在于找到一個(gè)從坐標(biāo)到該坐標(biāo)是否與其queen沖突的映射。剩下的只是實(shí)現(xiàn)方法上的不同
            一個(gè)Queen的攻擊范圍有8個(gè)方向,如果不考慮正負(fù)向,可認(rèn)為其攻擊方位實(shí)在4條直線(xiàn)上,OK
            -在橫向的沖突最容易解決,因?yàn)槲覀兘忸}時(shí)一般都是逐行求解,所以不會(huì)出現(xiàn)兩個(gè)Queen在一行上的情況
            -在縱向上的沖突也容易解決,我們可以聲明一個(gè)有個(gè)8個(gè)元素的BYTE數(shù)組BYTE col[8]={},如果坐標(biāo)為(i,j)的位置上有Queen,則執(zhí)行col[j]=1就可以了,以后直接判斷對(duì)應(yīng)列標(biāo)志位是否為1就可以判端新Queen是否與已有的Queen存在沖突
            -在正45度和負(fù)45度線(xiàn)上的沖突處理就比較復(fù)雜了,這里運(yùn)用一個(gè)最簡(jiǎn)單的幾何定理就可以簡(jiǎn)化問(wèn)題,幾何中直線(xiàn)的定義是y=ax+b;而我們的其余兩種沖突相應(yīng)的可表示為
            y=x+b1和y=-x+b2;
            然后根據(jù)x[0,7],和y[0,7]的取值區(qū)間得出相應(yīng)b1,b2的取值區(qū)間為
            b1 [-7,7]
            b2 [0,14]
            將b1區(qū)間平移7也得到了[0,14]
            這樣我們就可以再聲明兩個(gè)數(shù)組BYTE a[15],b[15],來(lái)唯一標(biāo)識(shí)正45度和負(fù)45度線(xiàn)上的沖突了,映射關(guān)系為
            i-j+7 ==>a[15];
            i+j    ==>b[15];

            一下是我實(shí)現(xiàn)的解法

             1#include "stdafx.h"
             2void Qu(int line);
             3BYTE col[8]={};//
             4BYTE a[15]={};//主對(duì)角線(xiàn)
             5BYTE b[15]={};//輔對(duì)角線(xiàn)
             6char chessArr[8][8];
             7int MethodCnt=0;
             8void CalQueeen()
             9{
            10    memset(chessArr[0],'*',64);
            11    Qu(0);
            12}

            13void Qu(int line)
            14{
            15    if (line<8)
            16    {
            17        for (int c=0;c<8;c++)
            18        {
            19            if (col[c]==0 && a[line-c+7]==0 && b[line+c]==0)
            20            {
            21                chessArr[line][c]='@';
            22                col[c]=1;
            23                a[line-c+7]=1;
            24                b[line+c]=1;
            25                Qu(line+1);
            26                chessArr[line][c]='*';//回溯
            27                col[c]=0;
            28                a[line-c+7]=0;
            29                b[line+c]=0;
            30            }

            31        }

            32    }

            33    else//到達(dá)搜索頂點(diǎn)
            34    {
            35        MethodCnt++;
            36        cout<<"_____________________________________________________________________"<<endl;
            37        cout<<MethodCnt<<endl;
            38        cout<<"---------------------------------------------------------------------"<<endl;
            39        for(int i=0;i<8;i++)
            40        {
            41            for(int j=0;j<8;j++)
            42                cout<<chessArr[i][j];
            43            cout<<endl;
            44        }

            45    }

            46}

            最后一共得出92中解法,有興趣的朋友可以試試

             

            posted on 2009-08-10 15:11 pear_li 閱讀(1926) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): C++

            国内精品九九久久久精品| 亚洲午夜无码AV毛片久久| 久久精品免费一区二区| 日韩电影久久久被窝网| 久久久久亚洲精品男人的天堂 | 美女写真久久影院| 久久AV高清无码| 伊人色综合久久天天| a级毛片无码兔费真人久久| 99久久无码一区人妻| 国内精品久久久久久麻豆| 精品久久久久久久久久中文字幕 | 国产精品va久久久久久久| 一本大道久久a久久精品综合| 国产精品欧美亚洲韩国日本久久| 伊人色综合久久天天| 久久免费99精品国产自在现线 | 国产精品一久久香蕉国产线看观看| 久久久久人妻精品一区 | 国内精品人妻无码久久久影院| 久久Av无码精品人妻系列| 91久久九九无码成人网站| 久久久久国产一区二区三区| 久久经典免费视频| 国产精品99久久免费观看| 99久久综合国产精品二区| 国产精品久久久香蕉| av午夜福利一片免费看久久| 人人狠狠综合久久亚洲| 人妻无码久久一区二区三区免费| 久久久久久久综合日本亚洲 | 久久电影网2021| 人妻精品久久久久中文字幕| 久久夜色精品国产噜噜噜亚洲AV| 精品久久久久久无码人妻热 | 亚洲AV无码久久精品狠狠爱浪潮| 91精品国产91久久久久久蜜臀| 久久精品无码一区二区三区免费 | 久久大香香蕉国产| 亚洲午夜无码AV毛片久久| 国产成人无码精品久久久久免费|