Я выполняю задание по моделированию недетерминированного конечного автомата, как я объясняю в этом посте. Я считываю этот ввод из файла tarea4.in
:
1
6 8 0 2
2
5
0 0 a
0 1 a
1 1 b
1 2 c
1 3 c
3 4 d
4 4 d
4 5 d
5
aaabcccc
aabbbbcdc
abbcdddcc
acdddddd
abc
Первая строка ввода представляет собой целое число T, представляющее количество случаев для оценки программы. Каждый тестовый пример начинается с 4 целых чисел, первое — это номер состояния автомата, следующее — количество переходов автомата, третье число — начальное состояние, а затем количество конечных состояний. затем идут конечные состояния (в примере конечные состояния 2 и 5). Затем следуют F строк, каждая с целым числом E, представляющим E — конечное состояние.
Затем следуют N строк (N — количество переходов), каждая с 2 целыми числами и символом I, J и C, представляющим состояния, в которых происходит переход, т. е. переход идет из состояния i в состояние J с символ C. После этой строки следует одно целое число S, которое будет содержать количество строк для проверки, затем S строк с соответствующими строками.
ожидаемый результат:
Test Case #2:
aaabcccc Rejected
aabbbbcdc Rejected
abbcdddcc Rejected
acdddddd Accepted
abc Accepted
Результат в моем коде:
Test Case #1:
aaabcccc Rejected
aabbbbcdc Rejected
abbcdddcc Rejected
acdddddd Rejected
abc Rejected
Вот мой код:
#include
#include
#include
Мой вопрос: почему я получаю неверный вывод? Я думаю, что это из-за недетерминированности автомата, определенного в тестовом примере, но как я могу правильно оценить строку?Как я могу изменить свою функцию с именем Assessment_string
так, чтобы она каким-то образом проверяла различные пути, по которым автомат может оценивать строку с помощью недетерминизма?
Я застрял с этим в течение нескольких дней, и, честно говоря, я несколько в отчаянии.