Я читал упражнение UVA, которое мне нужно для имитации детерминированного автомата стека, чтобы увидеть, принимаются или нет DSA определенные строки для данной записи в следующем формате:
В первой строке ввода будет целое число C, указывающее количество тестовых случаев. Первая строка каждого набора входных данных содержит пять целых чисел E, T, F, S и C, где E — количество состояний в автомате, T — количество переходов, F — количество конечных состояний, S — начальное состояние и C количество тестовых строк соответственно. В следующей строке будет записано F целых чисел, представляющих конечные состояния автомата. Затем следуют T строк, каждая с 2 целыми числами I и J и 3 строками, L, T и A, где I и J (0 ≤ I, J ‹ E) представляют состояние происхождения и назначения переходного состояния соответственно. L представляет собой символ, считанный с ленты в переход, T представляет символ, находящийся на вершине стека, а A — действие, выполняемое с вершиной стека в конце этого перехода (символ, используемый для представления нижней части стека). куча всегда Z. для представления конца строки или распаковки используется действие без учета вершины стека для символа перехода £). Алфавит стека будет заглавными буквами. Для цепочки А символы укладываются справа налево (так же, как и в программе JFlap, т. е. новой вершиной стека будет тот символ, который находится слева). Затем идут C строк, каждая с входной строкой. Входные строки могут содержать строчные буквы и цифры (не обязательно присутствующие в каком-либо переходе).
Вывод в первой строке каждого теста должен отображать следующую строку «Case G:», где G представляет номер теста (начиная с 1). Затем C строк, на которых нужно напечатать слово «ОК», если автомат принимает строку, или «Отклонить» в противном случае.
Например:
Input:
2
3 5 1 0 5
2
0 0 1 Z XZ
0 0 1 X XX
0 1 0 X X
1 1 1 X £
1 2 £ Z Z
111101111
110111
011111
1010101
11011
4 6 1 0 5
3
1 2 b A £
0 0 a Z AZ
0 1 a A AAA
1 0 a A AA
2 3 £ Z Z
2 2 b A £
aabbb
aaaabbbbbb
c1bbb
abbb
aaaaaabbbbbbbbb
это вывод:
Output:
Case 1:
Accepted
Rejected
Rejected
Rejected
Accepted
Case 2:
Accepted
Accepted
Rejected
Rejected
Accepted
Мне нужна помощь или любая идея, как я могу смоделировать этот DSA, я не прошу меня код, который решает проблему, потому что я хочу сделать свой собственный код (Идея состоит в том, чтобы научиться правильно??), Но мне нужна помощь. (какая-то идея или псевдокод), чтобы начать реализацию.