- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在阅读 UVA 的练习,我需要用它来模拟确定性下推自动机,看看如果某些字符串在以下格式的给定条目上被 PDA 接受或不接受:
输入的第一行会是一个整数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.来表示字符串的结尾,或者不考虑栈顶的unstack Action ,对于过渡字符使用
每个测试用例的第一行输出必须显示以下字符串“Case G:”,其中G代表测试用例的数量(从1开始)。如果自动机接受该字符串,则在 C 行上打印单词“OK”,否则打印“Reject”。
例如:
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
我需要一些帮助,或者知道如何模拟这个 PDA,我不是在问我解决问题的代码,因为我想制作自己的代码(我的想法是学习对吧??),但我需要一些帮助(一些想法或伪代码)才能开始实现。
最佳答案
您首先需要一个数据结构来保持转换。您可以使用带有包含转换五元组的转换结构的 vector 。但是你可以使用状态是整数的事实并创建一个 vector ,它保持在索引 0,从状态 0 转换;在索引 1 处,状态 1 就是这样转换的。这样您就可以减少寻找正确转换的搜索时间。
对于stack,你可以很方便的使用STL库中的stack。您还需要搜索功能,如果您使用第一种方法,它可能会根据您的实现进行更改,您可以使用如下函数:
int findIndex(vector<quintuple> v)//which finds the index of correct transition otherwise returns -1
然后使用返回值得到newstate和newstack symbol。
或者您可以在 vector 和表示是否找到转换的 bool 标志上使用 for 循环。
在第二种方法中,您可以使用一个函数来引用新状态和新堆栈符号,并在您找到合适的转换时设置它们。
对于输入,您可以根据个人喜好使用 vector 或 vector 之类的东西。您可以使用 for 循环实现您的 main 方法,但如果您想要额外的困难,您可以实现一个递归函数。愿一切轻松。
关于c++ - 在 C++ 中模拟确定性下推自动机 (PDA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683489/
我使用 Deflater 编写了一个备份程序SHA-1 用于存储文件和哈希值。我看到Java的Deflater使用zlib 。如果我显式设置 Deflater 的级别,无论平台和 JRE 版本如何,我
考虑以下算法: r = 2 while r >= 1: x = -1 + 2 * random.random() y = -1 + 2 * random.random() r
我正在编写一个持久保存到磁盘的映射类。我目前只允许 str键,但如果我可以使用更多类型会很好:希望最多可以是任何可散列的(即与内置 dict 相同的要求),但更合理的是我会接受字符串、unicode、
我有一个不使用随机化的脚本,当我运行它时会给出不同的答案。我希望每次运行脚本时答案都是一样的。该问题似乎只发生在某些(病态)输入数据上。 该代码段来自一种计算线性系统特定类型 Controller 的
这对我来说不是问题,没有它我也可以生活,但我只是好奇这是否可能以及如何实现。 今天我了解到,scrapy.Request 不会按照启动的顺序完成。 伪代码示例: class SomeSpider(sc
我正在运行这个 SVD来自 scipy 的求解器,代码如下: import numpy as np from scipy.sparse.linalg import svds features = np
我正在尝试使用确定性 Miller-Rabin 算法实现素数检查功能,但结果并不总是正确的:在检查前 1,000,000 个数字时,它只找到 78,495 而不是 78,498。 这是使用 [2, 7
我正在审查各种 Android 声音 API,我想知道我应该使用哪一个。我的目标是获得低延迟的音频,或者至少是关于播放延迟的确定性行为。 我们遇到了很多问题,Android 声音 API 似乎很垃圾,
过去,我处理过对时间要求严格的软件开发。这些应用程序的开发基本上是这样进行的:“让我们编写代码,测试延迟和抖动,并优化它们,直到它们在可接受的范围内。”我觉得这非常令人沮丧。这不是我所说的 适当的工程
给定: SQL Server 表名为 TEST_TABLE TEST_TABLE 中名为 TEST_FIELD 的列 VARCHAR(50) NOT NULL 第 1 行:10YR3/6 第 2 行:
我在 64 位 Windows PC 上使用 Microsoft Visual Studio Community 2015,版本 14.xxx。 程序读取一个文本文件,其中每一行都是桥牌(四名玩家,每
我需要在 PHP 中创建一个可证明公平(确定性和种子)加密安全 (CS) 随机数生成器。我们正在运行 PHP 5,而 PHP 7 现在并不是一个真正的选择。但是,我找到了 PHP 7 的新 CS 函数
我是一名优秀的程序员,十分优秀!