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

hnu 10076 Jimmy's Riddles DFA

   句子的語法匹配。這個(gè)用DFA確實(shí)可以很方便做出來,用遞歸判斷之類的應(yīng)該也可以。
   感覺用dfa只需要保證狀態(tài)轉(zhuǎn)換圖對了,基本上就不會出bug了,但是其它的方法去匹配
這種類似正則表達(dá)式的字符串就容易出錯(cuò)多了。

   百度百科的DFA定義如下:
      英文全稱:Deterministic Finite Automaton, 簡寫:DFA
  DFA定義:一個(gè)確定的有窮自動機(jī)(DFA)M是一個(gè)五元組:M=(K,Σ,f,S,Z)其中
  ① K是一個(gè)有窮集,它的每個(gè)元素稱為一個(gè)狀態(tài);
  ② Σ是一個(gè)有窮字母表,它的每個(gè)元素稱為一個(gè)輸入符號,所以也稱Σ為輸入符號字母表;
  ③ f是轉(zhuǎn)換函數(shù),是K×Σ→K上的映射,即,如 f(ki,a)=kj,(ki∈K,kj∈K)就意味著,
當(dāng)前狀態(tài)為ki,輸入符為a時(shí),將轉(zhuǎn)換為下一個(gè)狀態(tài)kj,我們把kj稱作ki的一個(gè)后繼狀態(tài);
  ④ S ∈ K是唯一的一個(gè)初態(tài);
  ⑤ Z⊂K是一個(gè)終態(tài)集,終態(tài)也稱可接受狀態(tài)或結(jié)束狀態(tài)。

   該題的狀態(tài)轉(zhuǎn)換圖:
   
   現(xiàn)在再根據(jù)狀態(tài)轉(zhuǎn)換圖,寫一個(gè)模擬轉(zhuǎn)換關(guān)系的匹配就非常方便了。。。
   代碼如下:
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;

string strNouns[8] =
{
    "tom", "jerry", "goofy", "mickey",
    "jimmy", "dog", "cat", "mouse"
};

bool IsNoun(string& str)
{
    for (int i = 0; i < 8; ++i)
    {
        if (str == strNouns[i])
        {
            return true;
        }
    }
    return false;
}

bool IsVerb(string& str)
{
    return str == "hate" || str == "love"
            || str == "know" || str == "like"
            || str == "hates" || str == "loves"
            || str == "knows" || str == "likes"; 
}

bool IsArticle(string& str)
{
    return str == "a" || str == "the";
}

bool CheckState(vector<string>& vs)
{
    if (vs.empty()) return false;
    
    int nState = 0;
    for (int i = 0; i < vs.size(); ++i)
    {
        //printf("nState:%d, str:%s\n", nState, vs[i].c_str());
        switch (nState)
        {
            case 0:
                if (IsArticle(vs[i]))
                {
                    nState = 1;
                    break;
                }
                else if (IsNoun(vs[i]))
                {
                    nState = 2;
                    break;
                }
                else
                {
                    return false;
                }
                
            case 1:
                if (IsNoun(vs[i]))
                {
                    nState = 2;
                    break;
                }
                else
                {
                    return false;
                }
                
            case 2:
                if (vs[i] == "and")
                {
                    nState = 0;
                    break;
                }
                else if (IsVerb(vs[i]))
                {
                    nState = 3;
                    break;
                }
                else
                {
                    return false;
                }
                
            case 3:
                if (IsArticle(vs[i]))
                {
                    nState = 4;
                    break;
                }
                else if (IsNoun(vs[i]))
                {
                    nState = 5;
                    break;
                }
                else
                {
                    return false;
                }
                
            case 4:
                if (IsNoun(vs[i]))
                {
                    nState = 5;
                    break;
                }
                else
                {
                    return false;
                }
                
            case 5:
                if (vs[i] == "and")
                {
                    nState = 3;
                    break;
                }
                else if (vs[i] == ",")
                {
                    nState = 0;
                    break;
                }
                else
                {
                    return false;
                }
        }
    }
    
    return nState == 5;
}

int main()
{
    int nT;
    
    scanf("%d%*c", &nT);
    while (nT--)
    {
        vector<string> vs;
        string line, str;
        
        getline(cin, line);
        stringstream ss(line);
        while (ss >> str)
        {
            vs.push_back(str);
        }
        printf("%s\n", CheckState(vs) ? "YES I WILL" : "NO I WON'T");
    }
    
    return 0;
}

posted on 2012-10-12 22:14 yx 閱讀(1065) 評論(2)  編輯 收藏 引用 所屬分類: 字符串

評論

# re: hnu 10076 Jimmy's Riddles DFA 2012-10-12 22:54 klion26

Orz!  回復(fù)  更多評論   

# re: hnu 10076 Jimmy's Riddles DFA 2012-10-12 22:56 遠(yuǎn)行

膜拜大哲@klion26
  回復(fù)  更多評論   

<2012年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

導(dǎo)航

統(tǒng)計(jì)

公告

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

me

好友

同學(xué)

網(wǎng)友

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美www在线| 国产日韩欧美精品综合| 亚洲免费观看高清完整版在线观看| 久久国产主播精品| 欧美在线播放视频| 久久久久久久久久久久久久一区| 久久久亚洲高清| 欧美a级一区| 亚洲毛片在线看| 中文精品视频| 久久aⅴ国产欧美74aaa| 久久综合狠狠综合久久综合88 | 亚洲春色另类小说| 欧美调教视频| 国产精品久久久久一区二区三区 | 亚洲娇小video精品| 久久久亚洲国产天美传媒修理工 | 亚洲一区二区视频在线观看| 欧美在线日韩精品| 媚黑女一区二区| 欧美午夜在线| 在线播放不卡| 亚洲一区二区三区涩| 久久久av水蜜桃| 亚洲欧洲一级| 欧美综合国产精品久久丁香| 欧美人在线视频| 国产亚洲欧美日韩美女| 1024成人| 欧美一区免费视频| 欧美大学生性色视频| 亚洲一区二区免费| 欧美成人精品在线视频| 国产酒店精品激情| 亚洲欧洲综合| 久久久另类综合| 中文国产亚洲喷潮| 欧美精品一区二区三区蜜臀| 黄色亚洲网站| 亚欧成人在线| 一本色道久久综合亚洲精品婷婷| 久久久久久一区| 国产欧美一区二区精品仙草咪| 亚洲人成网站在线观看播放| 久久久久国产一区二区三区四区| 日韩午夜激情av| 麻豆免费精品视频| 国产一区999| 欧美国产日本高清在线| 国产视频不卡| 午夜精品久久久久久久99水蜜桃 | 亚洲影院免费| 欧美激情一区二区三区全黄| 欧美一区二区三区在线视频| 国产精品欧美日韩一区二区| 亚洲视屏在线播放| 亚洲美女诱惑| 欧美精品二区| 亚洲精品一区在线| 亚洲国产福利在线| 女主播福利一区| 在线观看国产日韩| 在线一区二区视频| 国产精品成人va在线观看| 亚洲精品一区二区三区在线观看| 免费的成人av| 久久亚洲综合| 亚洲激情专区| 亚洲国产高清在线| 欧美激情一区二区三区全黄 | 亚洲视频在线免费观看| 亚洲精品欧美极品| 欧美日韩影院| 亚洲欧美成aⅴ人在线观看| 亚洲精品视频在线观看网站 | 亚洲福利视频在线| 欧美a级一区| 欧美高清成人| 亚洲影院免费观看| 欧美亚洲免费高清在线观看| 精品成人久久| 最新中文字幕亚洲| 国产精品久久精品日日| 久久精品视频免费| 久久先锋影音av| 亚洲精品无人区| 在线视频欧美日韩精品| 韩国av一区二区三区四区| 免费一级欧美在线大片| 欧美激情一区二区三区蜜桃视频| 亚洲一区精品在线| 久久精品国产77777蜜臀| 亚洲精品在线免费| 亚洲午夜久久久久久尤物| 极品少妇一区二区三区| 亚洲毛片av在线| 含羞草久久爱69一区| 亚洲激情婷婷| 国产日韩欧美视频| 亚洲国产日韩一区二区| 国产酒店精品激情| 亚洲黄色一区二区三区| 国产欧美一区二区三区另类精品| 欧美丰满少妇xxxbbb| 国产精品成人v| 欧美激情1区2区3区| 国产农村妇女精品一区二区| 最新高清无码专区| 韩国在线一区| 亚洲自拍都市欧美小说| 亚洲美女区一区| 久久九九免费视频| 亚洲女ⅴideoshd黑人| 麻豆精品在线播放| 久久精品视频播放| 欧美亚洲成人网| 亚洲国产综合在线| 在线日韩电影| 欧美伊久线香蕉线新在线| 亚洲影院一区| 欧美日韩一区在线| 亚洲三级影片| 亚洲精品123区| 久久婷婷人人澡人人喊人人爽| 麻豆成人在线| 亚洲日本成人| 亚洲第一天堂无码专区| 亚洲女人天堂成人av在线| 99精品欧美一区二区三区综合在线| 午夜在线一区二区| 亚洲欧美一区二区三区极速播放| 欧美另类在线播放| 亚洲国产成人91精品| 亚洲国产精品一区| 美国十次成人| 亚洲大片精品永久免费| 亚洲韩日在线| 美女精品视频一区| 欧美不卡在线视频| …久久精品99久久香蕉国产| 久久狠狠一本精品综合网| 欧美一区二区视频在线观看| 国产精品大全| 亚洲欧美日韩精品一区二区 | 国产专区精品视频| 欧美在线免费播放| 久久综合色播五月| 在线观看一区欧美| 免费不卡视频| 91久久亚洲| 亚洲一区二区视频| 国产欧美丝祙| 久久久久一区二区三区| 欧美aⅴ一区二区三区视频| 亚洲国产日韩一区| 欧美日韩国产探花| 亚洲午夜精品一区二区| 久久久亚洲成人| 亚洲精品色图| 国产精品久久久久久久久久尿| 亚洲欧美日韩成人| 欧美a一区二区| 国产精品99久久久久久久女警| 欧美午夜片在线免费观看| 亚洲欧美国产另类| 玖玖在线精品| 亚洲视频一区二区在线观看| 国产精品最新自拍| 美女主播一区| 中文亚洲字幕| 免费高清在线视频一区·| 亚洲美女在线一区| 国产乱子伦一区二区三区国色天香| 久久国产精品99国产精| 亚洲欧洲在线看| 久久精品一二三区| 亚洲精品国精品久久99热一| 国产精品网站在线观看| 麻豆精品精品国产自在97香蕉| 一本色道久久88综合亚洲精品ⅰ| 久久青草欧美一区二区三区| 99精品福利视频| 狠狠色综合网站久久久久久久| 欧美剧在线观看| 久久久免费av| 亚洲一区二区视频在线观看| 亚洲国产日韩在线| 久久午夜激情| 羞羞色国产精品| 夜夜嗨av色综合久久久综合网| 国产一区二区三区四区五区美女 | 亚洲人成在线播放网站岛国| 欧美一区午夜精品| 欧美日韩卡一卡二| 久久久国产精品亚洲一区| 亚洲视频第一页| 亚洲日本在线观看| 欧美/亚洲一区| 久久精品国产精品| 亚洲欧美影院|