• <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>

            pku 2488

            2009年8月9日

            題目鏈接:PKU 2488 A Knight's Journey

            分類:DFS

            題目分析與算法原型
                     這道題目就是一個(gè)騎士周游問題,問按照給你的走法能否從某個(gè)點(diǎn)出發(fā)不重復(fù)走遍棋盤每個(gè)點(diǎn)........直接DFS即可,因?yàn)轭}目要求行號(hào)用字母'A'~'Z'表示,列號(hào)用阿拉伯?dāng)?shù)字表示,走的路線是按字典序輸出,對(duì)于這些其實(shí)也好辦,我們可以定義這樣一個(gè)行走路線step[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}},而且出發(fā)點(diǎn)從(1,1)開始(不難想到,若從該點(diǎn)找不到可行路線,那么其他點(diǎn)出發(fā)也是找不到的),這樣找到的路線一定是字典序最小的,題目要求輸出路線,其實(shí)用一個(gè)字符數(shù)組倒著存,到時(shí)候倒著輸出即可了,呵呵..........

            Code: 

             1
            #include<stdio.h>
             2#include<string.h>
             3#define max 50
             4bool flag[max][max];
             5int step[8][2]={{-2,-1},{-2,1},{-1,-2},{-1,2},{1,-2},{1,2},{2,-1},{2,1}};
             6int count,n,p,q,pos;
             7char path[5000];
             8bool dfs(int x,int y)
             9{
            10    int i;
            11    if(count==p*q)return true;
            12    for(i=0;i<8;i++)
            13    {
            14        int px=x+step[i][0],py=y+step[i][1];
            15        if(px>=1&&px<=q&&py>=1&&py<=p&&!flag[px][py])
            16        {
            17            count++;
            18            flag[px][py]=true;
            19            if(dfs(px,py))
            20            {
            21                path[pos++]=py+'0';
            22                path[pos++]=px+64;
            23                return true;
            24            }

            25            flag[px][py]=false;
            26            count--;
            27        }

            28    }

            29    return false;
            30}

            31int main()
            32{
            33    int ccase=1,i;
            34    scanf("%d",&n);
            35    while(n--)
            36    {
            37        memset(flag,false,sizeof(flag));
            38        count=1;
            39        flag[1][1]=true;
            40        pos=0;
            41        scanf("%d%d",&p,&q);
            42        printf("Scenario #%d:\n",ccase++);
            43        if(dfs(1,1))
            44        {
            45            path[pos++]='1';
            46            path[pos++]='A';
            47            for(i=pos-1;i>=0;i--)printf("%c",path[i]);
            48            printf("\n");
            49        }

            50        else printf("impossible\n");
            51        printf("\n");
            52    }

            53    return 1;
            54}

            posted on 2009-08-09 15:58 蝸牛也Coding 閱讀(378) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2009年6月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(8)

            隨筆檔案(78)

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲午夜久久久久久久久电影网| 久久婷婷午色综合夜啪| 精品久久无码中文字幕| 久久久久亚洲精品天堂| 国产精品久久久亚洲| 国产免费久久精品99久久| 无码精品久久一区二区三区| 亚洲а∨天堂久久精品| 男女久久久国产一区二区三区| 久久精品视频网| 中文字幕无码久久精品青草| 69SEX久久精品国产麻豆| 蜜臀久久99精品久久久久久| 久久精品日日躁夜夜躁欧美| 亚洲国产精品久久久久久| 久久99热这里只有精品国产| 国产激情久久久久影院老熟女| 精品久久亚洲中文无码| 久久精品国产只有精品66| 国产91色综合久久免费分享| 亚洲国产香蕉人人爽成AV片久久 | 99久久精品免费国产大片| 亚洲综合久久夜AV | 日本免费一区二区久久人人澡| 三级三级久久三级久久| 久久久久国产| 26uuu久久五月天| 久久精品人人槡人妻人人玩AV| 欧美成人免费观看久久| 久久伊人影视| 欧美伊人久久大香线蕉综合69| 久久国产精品久久精品国产| 7777久久亚洲中文字幕| 久久久久国产精品熟女影院| 亚洲中文字幕久久精品无码喷水| 亚洲国产视频久久| 久久无码AV一区二区三区| 欧美色综合久久久久久| 天天综合久久一二三区| 亚洲精品乱码久久久久久中文字幕| 伊人久久大香线蕉综合网站|