因此,我可以采用具有单个起始状态的给定 NFA 并将其转换为等效的 DFA 很容易,但是当涉及具有多个起始状态的 NFA 时,我感到很困惑。
由于 DFA 只能有一个起始状态(如果我是正确的),我怎么知道 NFA 中的两个起始状态中的哪一个成为 DFA 中的唯一起始状态。
作为参考,这是我要转换的 NFA:
N| a | b | c |
____________________________
->0| {0,2} | {0,3} | --- |
*->0| {0} | {0} | {3} |
0| {2} | --- | {2,3} |
* 0| {2} | --- | {3} |
Run Code Online (Sandbox Code Playgroud)
其中: -> = 初始状态,* = 接受状态,--- = 空集,
我正试图在我正在编写的Hangman程序中使用Strings,并且无法让它们工作,因此尝试在更简单的基础上与它们合作并且我仍然没有运气.
至于我在参考文献中在线阅读以及其他人所说的这段代码应该有效:
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int main (int argc, char** argv){
string word = {"Hello"};
int length = strlen(word);
}
Run Code Online (Sandbox Code Playgroud)
但我得到这个编译器错误:
'string'未在此范围内声明
因此,'word'也未在范围内声明.
谁能看到我做错了什么?我在Ubuntu上使用g ++编译器,如果这有所不同,不知道哪个版本.