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

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>
            亚洲精品国久久99热| 久久久97精品| 欧美一站二站| 亚洲色图制服丝袜| 亚洲免费精品| 中日韩高清电影网| 亚洲一区国产| 久久se精品一区精品二区| 久久成人18免费网站| 老色鬼久久亚洲一区二区| 亚洲高清在线播放| 亚洲精品裸体| 亚洲一二三四区| 亚洲欧美日韩国产成人| 欧美专区在线观看一区| 蜜臀av性久久久久蜜臀aⅴ| 欧美激情综合网| 国产精品成人播放| 国产亚洲激情| 99视频国产精品免费观看| 亚洲午夜精品久久| 久久久久久久久久久一区| 欧美黄色影院| 亚洲午夜在线观看视频在线| 久久久久国产精品麻豆ai换脸| 欧美a级理论片| 国产精品欧美一区喷水| 曰韩精品一区二区| 亚洲视频一区二区免费在线观看| 校园春色国产精品| 亚洲国产成人精品久久久国产成人一区| 亚洲欧洲在线观看| 久久国产精品99国产精| 欧美日韩国产精品专区| 国产专区精品视频| 亚洲午夜日本在线观看| 欧美国产视频一区二区| 性久久久久久久久久久久| 欧美日韩国产二区| 亚洲人精品午夜在线观看| 久久久久久久久岛国免费| 亚洲日本无吗高清不卡| 亚洲精品国产视频| 在线视频日韩| 亚洲青涩在线| 久久成人免费网| 亚洲高清中文字幕| 亚洲美女毛片| 国产午夜精品久久久久久久| 欧美jizzhd精品欧美巨大免费| 国产精品拍天天在线| 一本久道久久久| 久久综合影视| 欧美在线免费观看视频| 国产乱码精品一区二区三区不卡| 亚洲精品欧美精品| 欧美jizz19性欧美| 久久久蜜桃精品| 尤物在线精品| 欧美+亚洲+精品+三区| 欧美在线免费| 一区视频在线播放| 欧美**字幕| 欧美va日韩va| 日韩一级成人av| 亚洲精品午夜精品| 欧美午夜精品久久久久免费视| 日韩天堂在线观看| 亚洲人成网站999久久久综合| 欧美激情按摩| 亚洲一区999| 亚洲视频1区| 亚洲精选中文字幕| 国产九九精品| 国产亚洲观看| 玖玖在线精品| 免费不卡欧美自拍视频| 亚洲精品乱码久久久久久黑人 | 日韩视频免费观看高清在线视频 | 亚洲一区999| 亚洲黄色视屏| 国产精品裸体一区二区三区| 久久人91精品久久久久久不卡| 久久一区二区三区超碰国产精品| 亚洲美女精品一区| 久久婷婷国产综合国色天香| 国产精品每日更新| 亚洲网站视频| 亚洲高清在线观看一区| 亚洲欧美国产不卡| 午夜久久电影网| 伊人精品在线| 国产日韩欧美电影在线观看| 香蕉久久夜色精品国产| 欧美一区二区三区精品电影| 曰韩精品一区二区| 一本色道88久久加勒比精品| 国产一区二区久久| 亚洲电影免费观看高清完整版| 欧美日韩伊人| 久久免费国产精品| 欧美日韩1080p| 久久久久久夜| 欧美吻胸吃奶大尺度电影| 久久视频在线视频| 欧美日韩国产大片| 美日韩精品免费观看视频| 欧美四级伦理在线| 欧美国产在线电影| 国产午夜精品久久久久久免费视| 亚洲欧洲日产国产网站| 国产一区自拍视频| 一本色道久久精品| 亚洲高清影视| 欧美在线999| 亚洲午夜视频在线观看| 久久综合中文色婷婷| 性xx色xx综合久久久xx| 麻豆av一区二区三区久久| 久久不见久久见免费视频1| 欧美人与禽性xxxxx杂性| 老司机午夜精品| 国产婷婷色一区二区三区在线| 亚洲精品国产精品国自产在线| 国产精品sss| 亚洲伊人网站| 欧美xx69| 久久久久一区二区| 亚洲深夜av| 日韩一区二区电影网| 国产一区二区三区久久精品| 欧美精品成人在线| 欧美成人小视频| 99国内精品久久久久久久软件| 国产日韩欧美一区二区| 亚洲精品日韩在线| 欧美亚洲视频| 欧美一区二区日韩| 国产精品区一区| 亚洲视频电影图片偷拍一区| 亚洲午夜高清视频| 欧美性猛片xxxx免费看久爱| 日韩一级不卡| 亚洲综合三区| 国产日韩欧美麻豆| 欧美影院在线播放| 老司机久久99久久精品播放免费| 在线亚洲欧美| 欧美在线黄色| 久久久一区二区三区| 激情久久久久久久| 久久视频免费观看| 亚洲大片在线观看| 亚洲精品在线一区二区| 欧美日韩国产免费观看| 在线一区二区三区做爰视频网站| 亚洲欧美不卡| 好吊色欧美一区二区三区视频| 久久视频国产精品免费视频在线| 亚洲成人直播| 亚洲一区二区三区四区在线观看| 国产精品99免费看 | 亚洲欧美日韩综合国产aⅴ| 欧美日韩中文字幕在线视频| 国产三区二区一区久久| 国产精品日韩一区二区| 国产亚洲欧美一区二区三区| 亚洲国产精品久久久久秋霞不卡| 亚洲精品免费观看| 久久成人18免费网站| 欧美成人自拍视频| 亚洲精品一区二区三区四区高清| 欧美日产在线观看| 99精品视频免费| 亚洲一区二区日本| 国产一区二区欧美日韩| 久久se精品一区二区| 在线观看日韩欧美| 欧美日韩一区二区在线观看| 午夜在线视频观看日韩17c| 欧美成人中文字幕在线| 小黄鸭视频精品导航| 亚洲欧洲在线一区| 国产精品影片在线观看| 欧美1区2区视频| 亚洲欧美一区二区精品久久久| 欧美成人精品激情在线观看| 亚洲性视频网址| 亚洲国产精品第一区二区| 国产精品高清免费在线观看| 鲁大师成人一区二区三区| 亚洲免费在线播放| 亚洲国产专区| 久久综合九色综合欧美就去吻| 亚洲图片欧美一区| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美激情精品久久久久久变态| 性欧美大战久久久久久久久| 99精品国产99久久久久久福利| 亚洲免费在线|