有限狀态機
常說的狀态機是有限狀态機FSM(Finite State Machine)。FSM指的是有有限個狀态(一般是一個狀态變量的值),這個機器同時能夠從外部接收信号和資訊輸入,機器在接收到外部輸入的信号後會綜合考慮目前自己的狀态和使用者輸入的資訊,然後機器做出動作:跳轉到另一個狀态。狀态機是有限狀态自動機的簡稱,是現實事物運作規則抽象而成的一個數學模型。
四大概念
兩種狀态機類型:
簡單示例
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef enum{
STATE1=0, STATE2, STATE3
}STATE_CODE;
int main(){
int curState = 0;
STATE_CODE stateCode = STATE1;
printf("state1\n");
while (true){
scanf("%d", &curState);
switch(stateCode){
case STATE1:
if (curState == 1){
stateCode = STATE2;
printf("state2\n");
}else{
stateCode = STATE1;
printf("state1\n");
}
break;
case STATE2:
if (curState == 2){
stateCode = STATE3;
printf("state3\n");
}else{
stateCode = STATE1;
printf("state1\n");
}
break;
case STATE3:
if (curState == 3){
printf("success\n");
return 0;
}else{
stateCode = STATE1;
printf("state1\n");
}
}
}
return 0;
}