/*
输入:多组测试数据,开始节点d,经过条件b,结束节点c,中间以空格隔开,0 0 0表示每组输入结束
样例输入: 0 a 1
0 a 2
0 b 1
1 a 3
1 a 4
2 a 1
0 0 0
解题思路:构造子集T
0 a b
a{1,2}T0 b{1}T1
T0 a{1,3,4}T2
T1 a{3,4}T3
T2 a{3,4}T3
由子集表生成新的连接图。
T0 a T2
T1 a T3
T2 a T3
*/
#include <cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<set>
#include<string>
#include<vector>
int k,k1=0; //k用来记录输入的路径条数,k1用来记录新生成的图路径条数
char d, b, c; //临时存储,输入的三个操作数
using namespace std;
struct point
{
char start;
char deal;
char end;
};
bool comp(const point &a, const point &b)
{
if(a.start==b.start)
return a.deal<b.deal;
return a.start<b.start;
}
void myscanf(point *a)
{
while(d!='0'||b!='0'||c!='0')
{
a[k].start = d;
a[k].deal = b;
a[k++].end = c;
scanf("%c %c %c", &d, &b
不确定的有穷自动机的确定化代码-(子集法)
最新推荐文章于 2024-10-01 07:18:55 发布