编译原理 子集构造法实现

本文介绍了一种使用子集构造法的方法,详细阐述了输入说明,包括点数、边数和集合中字符数目。接着,列举了具体的实例,展示如何通过起点、终点和边上的字符构建图形结构。最后,给出了构造好的边和新构造节点包含的原始点集合,深入理解编译原理中的子集构造法。
摘要由CSDN通过智能技术生成

输入说明

第一行 点数n 边数m 集合中字符数目k

第二行 集合中的字符

接下去m行 每一行三个值 起点 终点 经过的边上的字符


输出:

构造好的边

新构造节点包含的原先的点的集合


#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <stack>
#include <queue>
#include <string>
#include <vector>
#include <set>
#include <map>
#define pb push_back
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define fi first
#define se second
using namespace std;
typedef vector<int> vi;
const int N = 1000;
int n,m,k;
struct Edge{
    int to,nxt;
    char w;
};
class Graph{
    private:
        int *head;
        int tot;
        Edge *edge;
        vector<vi> ans;
        bool *vis;
        queue<vi> que;
        vector<char> chArray;
        int n,m;
    public :
        vo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值