青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

POJ百練 - 2814:撥鐘問題

鏈接: http://poj.grids.cn/practice/2814

個題目可以枚舉或者直接暴力。但是,這之前必須弄明白答案的解空間。。。也就是解可能的情況。。。很簡單,一共有9種移動方案。也很了然的知道對于某種方案使用N次的效果等同于N%4的效果,也就是說某種方案只可能使用0,1,2,3次。。。一共有9種方案,那么一共就只有4^9種可能的解。。。這么小的解空間,無論用什么方法都不會超時了。。。暴力可以才用9重循環,或者深搜,當時覺得寫9重循環是件很糗的事情,就果斷深搜了。。。
如果這題才用枚舉的方法的話,思考方式還是那樣先確定假設解的部分情況,通過已經知道的規則確定解的其它情況,然后求出這個解,判斷這個解是否滿足題目要求。。。比如,我們可以枚舉1,2,3號方案的情況,根據規則確定其它方案的使用情況,求出所有方案的使用情況后,判斷假設的解是否滿足要求就可以了...

我才用的是dfs+剪枝,這個題目其實題意或者說答案有誤,因為答案是搜索找到第一個解,而不是所謂的最短序列的解,當然如果數據使得2者都是一樣的話,那么題意就無誤了...我的代碼是假設找到的第一個就是最短序列的,這種情況下才能使用剪枝,因為找到一個解后就不需要繼續找了...


代碼如下:
#include <stdio.h>
int nMinTimes;
int nPath[40];
bool bFind = false;
char* szMoves[10] =
{
    NULL,
    "ABDE",
    "ABC",
    "BCEF",
    "ADG",
    "BDEFH",
    "CFI",
    "DEGH",
    "GHI",
    "EFHI"
};
bool IsPosOK(int* nPos)
{
    for (int i = 0; i < 9; ++i)
    {
        if (nPos[i])
        {
            return false;
        }
    }
    return true;
}
void Move(int nChoose, int nTimes, int* nPos)
{
    if (nTimes > 0)
    {
        char* pszStr = szMoves[nChoose];
        while (*pszStr)
        {
            nPos[*pszStr - 'A'] = (nPos[*pszStr - 'A'] + nTimes) % 4;
            ++pszStr;
        }
    }
}
void MoveBack(int nChoose, int nTimes, int* nPos)
{
    if (nTimes > 0)
    {
        char* pszStr = szMoves[nChoose];
        while (*pszStr)
        {
            nPos[*pszStr - 'A'] = (nPos[*pszStr - 'A'] - nTimes + 4) % 4;
            ++pszStr;
        }
    }
}
void Cal(int nChoose, int* nPos, int* nUsed, int nUsedTimes)
{
    if (nChoose == 10)
    {
        if (IsPosOK(nPos) && !bFind)
        {
            nMinTimes = nUsedTimes;
            for (int i = 0; i < nMinTimes; ++i)
            {
                nPath[i] = nUsed[i];
            }
            bFind = true;
        }
        return;
    }
    for (int i = 0; i <= 3; ++i)
    {
        Move(nChoose, i, nPos);
        for (int j = 0; j < i; ++j)//放入i次的nChoose
        {
            nUsed[nUsedTimes + j] = nChoose;
        }
        if (!bFind)
        {
            Cal(nChoose + 1, nPos, nUsed, nUsedTimes + i);
        }
        MoveBack(nChoose, i, nPos);
    }
}
int main()
{
    int nPos[9];
    int nUsed[40];
    for (int i = 0; i < 9; ++i)
    {
        scanf("%d", &nPos[i]);
    }
    Cal(1, nPos, nUsed, 0);
    for (int i = 0; i < nMinTimes; ++i)
    {
        printf("%d", nPath[i]);
        if (i != nMinTimes - 1)
        {
            putchar(' ');
        }
        else
        {
            putchar('\n');
        }
    }
    
    return 0;
}

這道題其實我wa了近10次,原因就是Move和MoveBack寫錯了,沒有移動nTimes次,而前面一直寫成了1,昨晚wa得實在無語了...今天晚上檢查才突然發現的...
這半個多月做了60道題了,都沒有改動這低級的bug習慣...實在無語...遞歸,回溯,剪枝都寫上了...唉...實在無語...還不如直接9重循環,多省心...真不該歧視某種方法的...

posted on 2011-11-28 19:55 yx 閱讀(4095) 評論(0)  編輯 收藏 引用 所屬分類: 搜索 、模擬

<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

導航

統計

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學

網友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区bb| 午夜精品久久久久久99热软件| 最新中文字幕亚洲| 亚洲人成网在线播放| 亚洲国产精品国自产拍av秋霞| 好男人免费精品视频| 在线电影国产精品| 99精品国产高清一区二区| 日韩网站在线观看| 亚洲欧美另类在线| 免费黄网站欧美| 亚洲区在线播放| 亚洲免费观看高清在线观看| 亚洲午夜精品一区二区三区他趣 | 在线精品在线| 亚洲精品视频在线| 亚洲欧美日韩国产成人| 美国十次成人| 一区二区高清在线观看| 欧美一区亚洲一区| 欧美破处大片在线视频| 国产亚洲精久久久久久| 日韩一区二区精品| 久久成人精品一区二区三区| 亚洲大黄网站| 午夜一区二区三区在线观看| 免费毛片一区二区三区久久久| 国产精品va| 亚洲激情在线| 久久国产66| 一本大道久久a久久精二百| 久久精品人人做人人综合 | 欧美影院久久久| 亚洲大片av| 日韩午夜三级在线| 亚洲国产美女| 亚洲天堂成人在线观看| 国产精品一区在线观看| 伊人春色精品| 91久久精品国产91久久性色| 午夜精品美女自拍福到在线 | 亚洲成色精品| 欧美一区激情视频在线观看| 亚洲在线视频网站| 亚洲午夜未删减在线观看| 一本色道久久99精品综合| 午夜精品久久久久久99热软件| 香港成人在线视频| 91久久香蕉国产日韩欧美9色| 免费看的黄色欧美网站| 亚洲日本无吗高清不卡| 91久久精品网| 国产免费观看久久黄| 国产亚洲欧美在线| 亚洲一区二区在线播放| 蜜臀久久99精品久久久久久9| 亚洲国产日日夜夜| 欧美一区二区黄| 国产欧美婷婷中文| 欧美性大战xxxxx久久久| 久久久久九九九| 午夜精品一区二区三区在线播放| 久久精品国产2020观看福利| 国产精品视频一二三| 国产精品高潮呻吟久久av无限 | 国产精品扒开腿做爽爽爽软件| 最新日韩精品| 国产欧美va欧美不卡在线| 在线欧美视频| 久久综合狠狠综合久久激情| 欧美专区第一页| 国精产品99永久一区一区| 欧美一区网站| 小处雏高清一区二区三区 | 欧美无乱码久久久免费午夜一区| 中国日韩欧美久久久久久久久| 亚洲专区一二三| 亚洲精品久久久久久久久| 久久久精品国产免大香伊| 国产精品亚洲一区二区三区在线| 亚洲一区二区免费| 宅男噜噜噜66国产日韩在线观看| 欧美日韩在线视频一区| 国产精品家教| 亚洲女爱视频在线| 亚洲欧美日韩系列| 好吊妞**欧美| 亚洲国产婷婷综合在线精品| 免费不卡在线观看av| 日韩一级免费观看| 亚洲在线电影| 在线精品国产成人综合| 欧美日韩成人激情| 欧美激情第五页| 久久久人成影片一区二区三区| 性亚洲最疯狂xxxx高清| 香蕉成人久久| 亚洲日本va午夜在线影院| 亚洲高清视频在线| 亚洲人被黑人高潮完整版| 国产精品久99| 新67194成人永久网站| 国产精品久久夜| 久久精精品视频| 欧美高清在线精品一区| 欧美精品一区在线播放| 午夜精品偷拍| 亚洲日本免费| 亚洲国产岛国毛片在线| 欧美精品久久一区| 亚洲视频欧洲视频| 国产精品免费网站在线观看| 欧美一区二区高清| 中文国产成人精品| 国产亚洲va综合人人澡精品| 一本色道久久综合亚洲精品婷婷| 国产精品二区在线| 亚洲欧美日韩国产综合在线| 久久精品一级爱片| 国产精品99久久久久久久vr | 午夜视频一区二区| 宅男噜噜噜66一区二区66| 久久精品99国产精品日本| 亚洲综合视频在线| 欧美多人爱爱视频网站| 久久久av网站| 国产美女搞久久| 国产一区导航| 久久婷婷激情| 欧美日韩免费区域视频在线观看| 久久久久久国产精品一区| 欧美日韩视频第一区| 女人色偷偷aa久久天堂| 国产亚洲电影| 亚洲在线观看| 欧美在线一级va免费观看| 香蕉久久国产| 久久精品欧美日韩| 国产精品vvv| 亚洲国产一区在线观看| 在线精品福利| 久久人人爽国产| 免费精品99久久国产综合精品| 国产日韩欧美成人| 欧美视频三区在线播放| 久久精品卡一| 国产精品亚洲一区二区三区在线| 亚洲精品国产精品乱码不99 | 欧美在线观看一区| 久久激情一区| 国语自产精品视频在线看8查询8| 亚洲综合不卡| 久久精品91| 国内精品伊人久久久久av一坑| 欧美有码在线视频| 卡一卡二国产精品| 亚洲国产精品国自产拍av秋霞| 免费亚洲电影在线观看| 91久久久久久久久久久久久| 一区二区三区色| 国产精品毛片在线| 久久精品1区| 欧美激情一区二区在线| 999在线观看精品免费不卡网站| 欧美国产一区二区三区激情无套| 影音欧美亚洲| 久久久av毛片精品| 亚洲午夜女主播在线直播| 国产精品草莓在线免费观看| 在线一区观看| 久久久久久久综合日本| 欲香欲色天天天综合和网| 欧美国产第二页| 亚洲午夜羞羞片| 你懂的视频欧美| 一区二区久久| 国产一区二区三区久久精品| 噜噜噜噜噜久久久久久91| 亚洲最新在线视频| 久久9热精品视频| 亚洲精品一区二区三区av| 国产精品xxx在线观看www| 久久久久国色av免费看影院| 久热成人在线视频| 亚洲福利国产精品| 欧美日韩一区自拍| 欧美亚洲色图校园春色| 99成人在线| 国产精品自在线| 欧美在线观看一区二区| 欧美一级二区| 亚洲一区制服诱惑| 久久国产色av| 欧美成人国产| 一区二区三区视频在线观看 | 亚洲一区二区三区久久| 激情综合色综合久久| 国产精品久久久久91| 免费成人美女女| 亚洲天堂免费在线观看视频|