• 大小: 3.70KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-03-27
  • 语言: 其他
  • 标签: 其他  

资源简介


有穷自动机转化为正规式,输入一个有穷自动机,把它转化为正规式,最好是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

评论

共有 条评论