前言:
最近在看師兄留下來的**, 其中設計到狀態機的問題,現在又來學自動機,暫時也不知道狀態機和自動機的區別。 但覺得有點類似
在刷csp第三題的時候(啊好難) 也有需要根據前面狀態來決定當前步驟的,再不想寫一長串if-else了,也是學自動機的動力(我要拿300分!)
不過最近在學時序組合電路,發現思想也很重合,果然我們學習的東西都是相輔相成的嗎hhh~
自動機的原理還沒弄懂,刷題直接感受吧
這裡不僅僅是自動機刷題的筆記,也涉及了我在刷題中為了避免寫出一大堆if-else的思考。
力扣393.utf-8編碼驗證
根據題意,要分析出,當前數值的處理是依賴於上乙個資料的,也就是有狀態在變化。
感悟: 昨天我做了很久,寫了一大串if-else,還用了許多表示變數,但是花了將近3個小時都沒有做出來,總有的測試用例沒有考慮到,又不肯放棄重寫,其實一開始讀題的時候,就要確定好狀態,不要害怕動筆,這樣才能分析好,定義到最簡潔的變數和狀態!!! 如果一上來就開始硬編碼,那肯定得面向測試用例程式設計了
解題思路:
分析清楚之後,就可以開始編碼了
class
solution
if(num==0)
continue
;else
if(num==
1|| num>4)
return
false;}
else
num--;}
return
(num==0)
;}private
int[
]tobinary
(int n)
return binary;
}}
AC自動機及字尾自動機
ac自動機是一種基於trie樹的演算法,其本質和kmp上的處理很相似。trie樹結構 kmp轉移思路 ac自動機組要由三個部分組成 trie樹的建立 fail指標的匹配 對ac自動機的詢問 每次建立自動機會有一次初始化 ac自動機類 struct node node結構體 struct ac voi...
字尾自動機 序列自動機綜合
好像序列自動機還沒有寫過 串長為n的串共有n 1個節點,除了串中的n個節點,還有乙個空的根節點放在串首。每個節點至多有26條出邊,每條邊連向它之後的第乙個字元。串中的任意乙個子串行對應了一條根到某個節點的路徑。且每條路徑對應乙個不同的子串行。每個節點的parent是這個字母上一次出現的位置。更新只要...
有窮自動機
problem description adfa 證明 adfa是可判定的。實驗方法 編寫乙個演算法 程式,對於任意給定的輸入,可以判定adfa。input 有多個測試序列,測試結束於測試檔案結束 每個測試序列的第一行為幾個正整數n m t a分別表示有n個狀態,從a開始m個小寫字母組成的字符集,第...