有限狀態機

2021-10-09 22:49:07 字數 919 閱讀 2814

使用leetcode原題「有效數字」,給定乙個字串,判斷是否可以轉為十進位制數,包含科學計數法、正負數、小數等。

leetcode-65. 有效數字

有限狀態機本質為乙個狀態轉移圖,要素為圖中各個結點的狀態,以及狀態之間的轉移動作。

1、定義單步轉移動作,定義函式movement()將當前到來的字元表示為動作編號。

2、定義狀態轉移圖,使用鄰接矩陣fsm[11][6]表示該狀態轉移圖。其中

行數11表示狀態結點數目,即共11種狀態;

列數6表示轉移動作數目,共6種動作。

不一定需要嚴格的為兩種不同的狀態定義不同的狀態結點。

當兩種狀態的後續變化情況一致時,可表示為同乙個結點,例如:

「數字」和「正負號|數字」後續狀態變化完全一致,可以視為同乙個結點。

int movement(char c)

int fsm[11][6] = , // 0 初態

, // 1 正負號

, // 2 正負號|數字

, // 3 正負號|數字|小數點

, // 4 正負號|數字|小數點|數字

, // 5 正負號|數字|小數點|數字|指數

, // 6 正負號|數字|小數點|數字|指數|正負號

, // 7 正負號|數字|小數點|數字|指數|正負號|數字

, // 8 錯誤結束

, // 9 成功結束

// 10 正負號|小數點

};bool isnumber(string s)

if (nowstate == 2 || nowstate == 3 || nowstate == 4 || nowstate == 7 || nowstate == 9)

return true;

return false;

}

有限狀態機

有限狀態機 finite state machine,fsm 又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型。狀態儲存關於過去的資訊,就是說 它反映從系統開始到現在時刻的輸入變化。轉移指示狀態變更,並且用必須滿足來確使轉移發生的條件來描述它。動作是在給...

有限狀態機

以前,只碰到過 陣列中所有數字只出現2次,只有乙個出現1次,找這個數的問題 每次迴圈異或陣列中元素,最後的結果就是single one。這次換作出現3次就懵逼了,主要原因,沒有使用過有限狀態機,應該說是連概念都沒有,所以這次一定要好好記錄一下 關於這道題的解釋discussion中woshidais...

有限狀態機

需要掌握的名詞 數字系統有兩大類有限狀態機 finite state machine,fsm moore狀態機和mealy狀態機。狀態機名 次態輸出 moore摩爾 f 現狀,輸入 g 現狀 mealy公尺粒 f 現狀,輸入 g 現狀,輸入 mealy型狀態機 下一狀態不但與當前狀態有關,還與當前輸...