資源簡介
有窮自動機轉化為正規式,輸入一個有窮自動機,把它轉化為正規式,最好是NFA,DFA也可以。
代碼片段和文件信息
#include?
#include?
void?main(){
?struct?Node
{
???int?n;//入度
???int?m;//出度
???int?a;//狀態號
};
???struct?Relate
{
???int?a;//前面的狀態
???int?b;//后面的狀態
???char?x[20];//字符
};
???char?tidai[20]={‘(‘};
???char?wuqiong[2]={‘*‘};
???char?huozhe[2]={‘|‘};
???char?zuokuohao[2]={‘(‘};
???char?youkuohao[2]={‘)‘};
int?ij;
int?z_num;//z_num:狀態數
int?b_num;//b_num:邊數
printf(“請輸入FA狀態數(包括開始節點):“);
scanf(“%d“&z_num);
struct?Node?node[15];
printf(“請輸入各FA狀態(從1開始依次向后不能為0)\n:“);
for?(i=0;i {
scanf(“%d“&node[i].a);
}
for?(i=0;i {
node[i].m=0;//必須初始化否則亂碼
????node[i].n=0;
}
int?kl;
printf(“請輸入FA狀態轉換邊數\n:“);
scanf(“%d“&b_num);
struct?Relate?relate[15];
printf(“請輸入各個邊(逗號分隔)\n:“);
for?(i=0;i {
???scanf(“%d%d%s“&relate[i].a&relate[i].brelate[i].x);
???
???for?(l=0;l ???{
???if?(relate[i].a==node[l].a)
???{
???node[l].m++;
???}
???if?(relate[i].b==node[l].a)//因為是分別判斷??這里不能用else?if
評論
共有 條評論