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

uva 657 - The die is cast

   這個題不錯,居然需要在dfs里面寫bfs。題意類似于圖像識別里面,搜索一張圖像里面的某個指定區域里面有幾個斑點,題意里面的斑點是指色子。
30 15 
..............................
..............................
...............*..............
...*****......****............
...*X***.....**X***...........
...*****....***X**............
...***X*.....****.............
...*****.......*..............
..............................
........***........******.....
.......**X****.....*X**X*.....
......*******......******.....
.....****X**.......*X**X*.....
........***........******.....
..............................
比如上面這個30 * 15的圖片里面,一共有四個區域,*作為區域的底色,然后是求區域里面有多少個X的塊。這個題單純dfs的話,很沒辦法,因為無法一次性把連接在一起的X都搜索了。比如,
5 5
XXX*X 
XXX*X 
..... 
X***X 
XX*** 
的時候,dfs很明顯就會出現問題,因為會先離開X塊,再次回到X塊,計數就會出現問題了。因此只能遇到X的時候,進行一次bfs,將與其相連接的X全部搜索掉。。。并且找到與當前X塊相連接的一個*的位置,如果有這樣的位置,就繼續進行dfs。

代碼如下:
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue>
using namespace std;

int nW, nH;
char szData[100][100];
bool bVisit[100][100];
int nNum;
int nDice[100];
int nAdd[4][2] = {{0, -1}, {-1, 0}, {0, 1}, {1, 0}};

bool IsPosOk(int i, int j)
{
    return i >= 0 && i < nH && j >= 0 && j < nW;
}

struct POS
{
    int nI;
    int nJ;
};

bool Bfs(int& nI, int& nJ)
{
    bool bRet = false;
    queue<POS> qp;
    POS pos = {nI, nJ};
    int i = nI, j = nJ;

    qp.push(pos);
    while (qp.empty() == false)
    {
        POS head = qp.front();
        qp.pop();

        for (int m = 0; m < 4; ++m)
        {
            int nNextI = head.nI + nAdd[m][0];
            int nNextJ = head.nJ + nAdd[m][1];

            if (IsPosOk(nNextI, nNextJ) && bVisit[nNextI][nNextJ] == false)
            {
                if (szData[nNextI][nNextJ] == 'X')
                {
                    bVisit[nNextI][nNextJ] = true;
                    POS pos = {nNextI, nNextJ};
                    qp.push(pos);
                }
                else if (szData[nNextI][nNextJ] == '*')
                {
                    bRet = true;
                    nI = nNextI;//   這里是返回新的dfs位置
                    nJ = nNextJ;
                }
            }
        }
    }
    
    return bRet;
}

void dfs(int i, int j, int nNum)
{
    bVisit[i][j] = true;
    if (szData[i][j] == 'X')
    {
        nDice[nNum]++;
        bool bDfs = Bfs(i, j);//擴散掉當前連通的所有'X'
        if (bDfs == false)
        {
            return;
        }
        else
        {
            dfs(i, j, nNum);
        }
    }

    for (int m = 0; m < 4; ++m)
    {
        int nNextI = i + nAdd[m][0];
        int nNextJ = j + nAdd[m][1];

        if (IsPosOk(nNextI, nNextJ) && bVisit[nNextI][nNextJ] == false
                && szData[nNextI][nNextJ] != '.')
        {
            dfs(nNextI, nNextJ, nNum);
        }
    }
}

int main()
{
    int nCases = 1;

    while (scanf("%d%d", &nW, &nH), nW + nH)
    {
        for (int i = 0; i < nH; ++i)
        {
            scanf("%s", szData[i]);
        }
        memset(bVisit, falsesizeof(bVisit));
        memset(nDice, 0, sizeof(nDice));
        nNum = 0;

        for (int i = 0; i < nH; ++i)
        {
            for (int j = 0; j < nW; ++j)
            {
                if (szData[i][j] == 'X' && bVisit[i][j] == false)
                {
                    dfs(i, j, nNum);
                    nNum++;
                }
            }
        }
        sort(nDice, nDice + nNum);

        printf("Throw %d\n", nCases++);
        for (int i = 0; i < nNum; ++i)
        {
            printf("%d%s", nDice[i], i == nNum - 1 ? "\n" : " ");
        }
        printf("\n");
    }

    return 0;
}

posted on 2012-07-14 21:16 yx 閱讀(960) 評論(0)  編輯 收藏 引用 所屬分類: 搜索

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

公告

常用鏈接

留言簿(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>
            美女精品视频一区| 欧美激情 亚洲a∨综合| 一区二区三区国产精品| 午夜精品免费| 亚洲欧美成人网| 国产精品视频yy9099| 99re6热只有精品免费观看| 欧美www在线| 欧美肥婆在线| 亚洲欧美日韩专区| 亚洲视频在线观看网站| 国产美女精品人人做人人爽| 久久青青草综合| 久久一区免费| 亚洲午夜精品在线| 午夜久久资源| 亚洲成人资源| 亚洲人成77777在线观看网| 免费成人av在线看| 午夜激情一区| 久久久久综合网| 亚洲欧美日本在线| 老牛影视一区二区三区| 亚洲午夜国产一区99re久久| 欧美在线国产精品| 亚洲一区尤物| 欧美另类高清视频在线| 久久精品国产一区二区三区| 国产精品看片资源| 中文在线一区| 亚洲人成亚洲人成在线观看图片| 亚洲欧美一区二区精品久久久| 午夜精品一区二区三区在线视| 美女网站在线免费欧美精品| 久久久久久穴| 欧美日韩精品一本二本三本| 在线亚洲一区| 欧美福利一区| 久久夜色精品亚洲噜噜国产mv| 国产精品久久久对白| 欧美中文字幕久久| 一本色道久久综合亚洲精品不卡 | 一区二区三区日韩精品视频| 韩国三级电影久久久久久| 亚洲少妇自拍| 午夜在线精品偷拍| 国产欧美日韩视频一区二区| 美女精品国产| 久久综合久久久久88| 久久野战av| 最新国产成人在线观看| 欧美国内亚洲| 一区二区三区www| 欧美亚洲在线观看| 一区二区亚洲欧洲国产日韩| 免费观看国产成人| 一区二区三区视频在线观看| 午夜精品久久久久久久99樱桃| 国产日韩在线亚洲字幕中文| 欧美在线免费观看| 亚洲精品久久7777| 午夜精品免费| 亚洲乱码国产乱码精品精98午夜| 欧美色精品天天在线观看视频 | 欧美激情网友自拍| 一本到12不卡视频在线dvd| 久久精品一二三区| 亚洲毛片在线观看| 久久久久国产精品www| 一本久道久久综合狠狠爱| 国产尤物精品| 国产精品羞羞答答xxdd| 欧美成人小视频| 久久久久久久波多野高潮日日| 一本久久综合| 亚洲日本电影| 亚洲国产欧美一区| 欧美激情中文字幕乱码免费| 久久欧美肥婆一二区| 久久精品国语| 老牛影视一区二区三区| 亚洲免费在线播放| 亚洲一级电影| 亚久久调教视频| 欧美一区二区三区在线播放| 亚洲欧美在线高清| 亚洲资源av| 久久精品最新地址| 久热国产精品| 欧美福利影院| 99国产精品99久久久久久粉嫩| 亚洲人成网在线播放| 99精品欧美一区| 亚洲欧美日韩在线观看a三区| 欧美一区二区在线免费观看| 午夜在线精品| 欧美高清自拍一区| 国产精品av一区二区| 国产欧美精品va在线观看| 激情综合色丁香一区二区| 1024国产精品| 亚洲伊人伊色伊影伊综合网| 久久久精品一区| 日韩亚洲一区二区| 久久av在线看| 国产精品久久久久久久久久免费看| 久久嫩草精品久久久精品一| 亚洲人成网站精品片在线观看| 99精品99| 免费短视频成人日韩| 亚洲视频欧美在线| 欧美精品一区二区三区在线看午夜| 国产精品国产a级| 亚洲国产精品久久久| 午夜电影亚洲| 99精品国产99久久久久久福利| 久久久久久电影| 国产在线乱码一区二区三区| 亚洲欧美日韩在线观看a三区| 亚洲国产国产亚洲一二三| 亚洲先锋成人| 国产精品免费福利| 亚洲新中文字幕| 99亚洲视频| 国产精品美女主播在线观看纯欲| 亚洲毛片在线看| 亚洲人成在线免费观看| 欧美国产激情| 亚洲精品国精品久久99热| 欧美国产日韩精品| 欧美二区乱c少妇| 在线视频欧美日韩| 亚洲欧美电影在线观看| 国语自产精品视频在线看抢先版结局 | 久久成人免费电影| 韩国av一区二区| 亚洲电影免费| 国产精品国产一区二区| 欧美一区成人| 久久影院亚洲| 在线视频免费在线观看一区二区| 日韩一级片网址| 激情亚洲一区二区三区四区| 亚洲国产精品免费| 国产三级欧美三级| 欧美黄色一区二区| 亚洲性图久久| 午夜精品久久久| 亚洲精品1区2区| 亚洲综合色激情五月| 亚洲国产成人精品女人久久久 | 日韩一级精品| 翔田千里一区二区| 亚洲四色影视在线观看| 久久全国免费视频| 午夜综合激情| 欧美日韩免费观看一区二区三区| 欧美在线资源| 国产精品午夜在线观看| 一区二区三区久久| 一区二区三区日韩在线观看| 欧美成人精品h版在线观看| 久久久xxx| 韩国美女久久| 久久久久欧美精品| 欧美成人性网| 亚洲国产一区二区在线| 玖玖精品视频| 欧美二区在线观看| 91久久精品一区二区三区| 蜜乳av另类精品一区二区| 欧美不卡三区| 一区二区欧美在线观看| 欧美日本一道本在线视频| 亚洲毛片在线观看| 亚洲欧美一区在线| 国产欧美日韩精品在线| 久久精品国产亚洲精品 | 99国产精品久久久久久久| 一级成人国产| 国产日产高清欧美一区二区三区| 久久精品91久久久久久再现| 老巨人导航500精品| 一区二区免费在线播放| 国产亚洲一区二区三区在线播放| 欧美在线一区二区| 影音先锋久久| 欧美日韩一区二区三区| 午夜精品久久久久久久男人的天堂 | 狠狠综合久久av一区二区小说 | 久久久水蜜桃| 亚洲理论在线观看| 欧美mv日韩mv国产网站app| 亚洲在线观看| 亚洲精品中文字幕女同| 国精产品99永久一区一区| 欧美视频福利| 欧美日韩理论| 欧美大成色www永久网站婷| 亚洲欧美久久久|