用有窮自動機解一道面試題

2021-08-22 01:36:30 字數 1188 閱讀 7249

當年從山東一家國企逃到北京時,第一次的面試題中有一道程式設計題,題目的要求是:乙個字串由多個單詞組成,這些單詞由乙個或者連連續多個空格分隔開,請寫乙個程式統計輸入的字串有多少個單詞。

這個題目很簡單,可能有n種方法可以解決它。把它用來做例項,並非是要想說明dfa的功能強大,而是因為它是乙個說明dfa的好例子。這個dfa:

字母表:英文本母和空格。

狀態:起始狀態、單詞狀態、空格狀態和接受狀態。

轉換規則

起始狀態下讀到非空格,進入單詞狀態。

單詞狀態下讀到空格,進入空格狀態。

空格狀態下讀到非空格,進入單詞狀態。

在起始狀態、單詞狀態和空格狀態下讀到』/0』,進入結束狀態。

每次進入單詞狀態,單詞數計數加1。

實現**如下:

//build: gcc -ddebug -g countwords.c -o cw.exe

#include

<

stdio

.h>

#include

#include

<

assert

.h>

intcountwords

(const

char

* pszstr

)estate

= stat_start

;int

nwordsnr

= 0;

const

char* p

= pszstr

;assert

(pszstr

!= null

);while(*p

!= '/0'

)else

break;}

case

stat_in_word

:break;}

case

stat_in_space

:break;}

default

:break;}

p++;

}return

nwordsnr;}

intmain

(int

argc

, char

* argv

)else

return

nret;}

試著解一道騰訊面試題

帖子問題 同學去面試的 1 設計乙個魔方 六面 的程式。2 有一千萬條簡訊,有重複,以文字檔案的形式儲存,一行一條,有重複。請用5分鐘時間,找出重複出現最多的前10條。3 收藏了1萬條url,現在給你一條url,如何找出相似的url。面試官不解釋何為相似 想了一中午,寫了一下午 真服了自己,這麼鑽牛...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...