9.2带有输出的有限状态机\color{blue}9.2 带有输出的有限状态机9.2带有输出的有限状态机

\qquad许多器件,包括计算机元件,可以用一种叫做有限状态机的结构来模拟。很多类型的有限状态机可用在模型里。所有这些有限状态机都包含一个有限状态集合,一个指定的初始状态,一个输入字母表,和一个转换函数,这个函数为任何一个状态和输入对,给出下一个状态,这一节我们将讨论带有输出的有限状态机。我们将说明如何用有限状态机来模拟自动贩卖机、延迟输入机、整数加法器等。
\qquad在给出正式定义之前,我们先来看一下自动贩卖机是如何被模拟的。一个自动贩卖机可以接收5分、10分、25分的钱。当收到的总款数为30分或更多分钱时,机器立即找回多余的钱。当总数达到30分,余款找完之后,顾客可以按以下橙色的按钮就得到一个橙汁,或者按一下红色按钮就得到一个苹果汁。我们通过描述它的状态看它是如何工作的,看一下当一个输入进来的时候,它的状态和输出是如何变化的。
\qquad这个机器共有7个不同的状态si,i=0,1,2,⋯,6,s_i,i=0,1,2,\cdots, 6,si​,i=0,1,2,⋯,6,其中sis_isi​代表收到了5i5i5i分钱。机器开始的状态是s0s_0s0​,表示一分钱也没有收到。可能的输入是5分、10分、25分、橙色按钮和红色按钮。可能的输出是,什么也没有(n)、5分、10分、15分、20分、25分、一个橙汁和苹果汁。
\qquad我们用下面的例子说明这个机器的模型是如何工作的。假设一个学生在投如10分钱后,又投入25分钱,找回5分钱,然后按橙色按钮要橙汁。机器的开始状态是s0s_0s0​,第一个输入是10分钱,状态从s0s_0s0​变成s2s_2s2​并且没有输出。第二个输入是25分钱,状态从s2s_2s2​变成s6s_6s6​并且给出5分钱做为输出。下一个输入是橙色按钮,状态从s6s_6s6​变成s0s_0s0​并且给出一个橙汁做为输出。我们可以把这个机器的所有状态变化和输出列在一个表中。为了做这个工作,我们要给每一个状态和输入对,指定一个状态和输出,表9.2.1为每一个状态和输入对,给出了转换和输出。

表9.2.1 自动贩卖机的状态表
状态 下一个状态 输出
输入
5   10   25   O   R
输入
5   10   25   O   R
\begin{array}{l}s_0 \\ s_1 \\ s_2 \\ s_3 \\ s_4 \\s_5 \\ s_6 \end{array} \begin{array}{l}s_1 & s_2 & s_5 & s_0 & s_0 \\ s_2 & s_3 & s_6 & s_1 & s_1 \\ s_3 & s_4 & s_6 & s_2 & s_2 \\ s_4 & s_5 & s_6 & s_3 & s_3 \\ s_5 & s_6 & s_6 & s_4 & s_4 \\s_6 & s_6 & s_6 & s_5 & s_5 \\ s_6 & s_6 & s_6 & s_0 & s_0 \end{array} \begin{array}{l}n & n & n & n & n \\ n & n & n & n & n \\ n & n & 5 & n & n \\ n & n & 10 & n & n \\ n & n & 15 & n & n \\n & 5 & 20 & n & n \\ 5 & 10 & 25 & OJ & AJ \end{array}

另一种描述机器行为的方法是使用带有标号的有向图来表示,其中每个圈代表一个状态,边代表转换,并且边上标上输入和输出。另一种描述机器行为的方法是使用带有标号的有向图来表示,其中每个圈代表一个状态,\\\\ 边代表转换,并且边上标上输入和输出。另一种描述机器行为的方法是使用带有标号的有向图来表示,其中每个圈代表一个状态,边代表转换,并且边上标上输入和输出。

定义9.1.1.一个有限状态机M=(S,I,O,f,g,s0),包含一个有限的状态集合S,一个有限输入字母表I,一个有限输出字母表O,一个转换函数f,它为每一个状态和输入对,给出一个新的状态,一个输出函数g,它为每一个状态和输入对,给出一个输出,一个初始状态s0.设M=(S,I,O,f,g,s0)是一个有限状态机,我们可以用一个状态表来表示所有状态和输入对的转换函数f和输出函数g的值。定义9.1.1.一个有限状态机M=(S, I, O, f, g, s_0),包含一个有限的状态集合S,一个\\\\ 有限输入字母表I, 一个有限输出字母表O,一个转换函数f,它为每一个状态和输入对,\\\\ 给出一个新的状态,一个输出函数g,它为每一个状态和输入对,给出一个输出,一个初\\\\ 始状态s_0.设M = (S, I, O, f, g, s_0)是一个有限状态机,我们可以用一个状态表来表示\\\\ 所有状态和输入对的转换函数f和输出函数g的值。定义9.1.1.一个有限状态机M=(S,I,O,f,g,s0​),包含一个有限的状态集合S,一个有限输入字母表I,一个有限输出字母表O,一个转换函数f,它为每一个状态和输入对,给出一个新的状态,一个输出函数g,它为每一个状态和输入对,给出一个输出,一个初始状态s0​.设M=(S,I,O,f,g,s0​)是一个有限状态机,我们可以用一个状态表来表示所有状态和输入对的转换函数f和输出函数g的值。
例9.2.1表9.2.2给出了一个有限状态机,其中S={s0,s1,s2,s3},I={0,1},O={0,1},前二列代表转换函数f的值,后两列代表输出函数g的值。另一种表示有限状态机的方法叫做状态图,它是一有向图,边上带有标记,状态用圆圈表示,边上根据函数标着输入输出对。例9.2.1表9.2.2给出了一个有限状态机,其中S = \lbrace s_0, s_1, s_2, s_3 \rbrace, I = \lbrace 0, 1 \rbrace, O = \\\\ \lbrace 0, 1 \rbrace, 前二列代表转换函数f的值,后两列代表输出函数g的值。另一种表示有限状态机\\\\ 的方法叫做状态图,它是一有向图,边上带有标记,状态用圆圈表示,边上根据函数标着\\\\ 输入输出对。例9.2.1表9.2.2给出了一个有限状态机,其中S={s0​,s1​,s2​,s3​},I={0,1},O={0,1},前二列代表转换函数f的值,后两列代表输出函数g的值。另一种表示有限状态机的方法叫做状态图,它是一有向图,边上带有标记,状态用圆圈表示,边上根据函数标着输入输出对。

例9.2.1.表9.2.2给出了一个有限状态机,其中S={s0,s1,s2,s3},I={0,1},O={0,1},前两列代表转换函数f的值,后两列代表输出函数g的值。例9.2.1.表9.2.2给出了一个有限状态机,其中S = \lbrace s_0, s_1, s_2, s_3 \rbrace, I = \lbrace 0, 1 \rbrace, O \\\\ = \lbrace 0, 1 \rbrace, 前两列代表转换函数f的值,后两列代表输出函数g的值。例9.2.1.表9.2.2给出了一个有限状态机,其中S={s0​,s1​,s2​,s3​},I={0,1},O={0,1},前两列代表转换函数f的值,后两列代表输出函数g的值。

表9.2.2
状态 f g
输入
0   1
输出
0   1
\begin{array}{l}s_0 \\ s_1 \\ s_2 \\ s_3 \end{array} \begin{array}{l}s_1 & s_0 \\ s_3 & s_0 \\ s_1 & s_2 \\ s_2 & s_1 \end{array} \begin{array}{l}1 & 0 \\ 1 & 1 \\ 0 & 1 \\ 0 & 0 \end{array}

例9.2.3.给出状态图9.2.3所示的有限状态机的状态表。

解:状态表如表9.2.3所示。

表9.2.3
状态 f g
输入
0   1
输出
0   1
\begin{array}{l}s_0 \\ s_1 \\ s_2 \\ s_3 \\ s_4 \end{array} \begin{array}{l}s_1 & s_3 \\ s_1 & s_2 \\ s_3 & s_4 \\ s_1 & s_0 \\ s_3 & s_4 \end{array} \begin{array}{l}1 & 0 \\ 1 & 1 \\ 0 & 0 \\ 0 & 0 \\ 0 & 0 \end{array}

假设一个输入串是x=x1x2⋯xk,则读如这个输入可以让状态机从状态s0变到状态s1,其中s1=f(s0,x1),然后变到状态s2,其中s2=f(s1,x2),⋯,这一系列的转换也产生了一个输出串y=y1y2⋯yk,其中,y1=g(s0,x1)对应从状态s0到状态s1的转换,y2=g(s1,x2)对应从状态s1到状态s2的转换,⋯。一般地,yj=g(sj−1,xj),j=1,2,⋯,k。有时候我们也把输出函数表示成g(x)=y,其中y是对应输入x的输出,这种记法很多应用中都很有用处。假设一个输入串是x = x_1x_2 \cdots x_k,则读如这个输入可以让状态机从状态s_0变到状态\\\\ s_1,其中s_1 = f(s_0, x_1),然后变到状态s_2,其中s_2 = f(s_1, x_2),\cdots, 这一系列的转换\\\\ 也产生了一个输出串y = y_1y_2 \cdots y_k, 其中,y_1 = g(s_0, x_1)对应从状态s_0到状态s_1的\\\\ 转换,y_2 = g(s_1, x_2)对应从状态s_1到状态s_2的转换,\cdots。一般地,y_j = g(s_{j-1}, x_j\\\\ ), j = 1, 2, \cdots, k。有时候我们也把输出函数表示成g(x) = y,其中y是对应输入x的\\\\ 输出,这种记法很多应用中都很有用处。假设一个输入串是x=x1​x2​⋯xk​,则读如这个输入可以让状态机从状态s0​变到状态s1​,其中s1​=f(s0​,x1​),然后变到状态s2​,其中s2​=f(s1​,x2​),⋯,这一系列的转换也产生了一个输出串y=y1​y2​⋯yk​,其中,y1​=g(s0​,x1​)对应从状态s0​到状态s1​的转换,y2​=g(s1​,x2​)对应从状态s1​到状态s2​的转换,⋯。一般地,yj​=g(sj−1​,xj​),j=1,2,⋯,k。有时候我们也把输出函数表示成g(x)=y,其中y是对应输入x的输出,这种记法很多应用中都很有用处。

例9.2.4.对于图9.2.3所示的有限状态机,如果输入是101011,找出对应的输出是什么?例9.2.4.对于图9.2.3所示的有限状态机,如果输入是101011,找出对应的输出是什么?例9.2.4.对于图9.2.3所示的有限状态机,如果输入是101011,找出对应的输出是什么?
解:输出是001000。连续状态和输出如表9.2.4所示。解:输出是001000。连续状态和输出如表9.2.4所示。解:输出是001000。连续状态和输出如表9.2.4所示。

表9.2.4
输入 101011-
状态 $s_0s_3s_1s_2s_3s_0s_3$
输出 001000-

例9.2.5.在许多电子器件中有一个很重要的元件,称为单位延迟器,它的作用是把输入延迟一个指定的时间输出。怎样构造一个有限状态机来把一个输入串延迟一个单位时间输出呢?即对于给定的二进制输入串x1x2⋯xk,可以得到一个输出二进制串:0x1x2⋯xk−1。例9.2.5.在许多电子器件中有一个很重要的元件,称为单位延迟器,它的作用是把输入\\\\ 延迟一个指定的时间输出。怎样构造一个有限状态机来把一个输入串延迟一个单位时间\\\\ 输出呢?即对于给定的二进制输入串x_1x_2 \cdots x_k,可以得到一个输出二进制串:\\\\ 0x_1x_2 \cdots x_{k-1}。例9.2.5.在许多电子器件中有一个很重要的元件,称为单位延迟器,它的作用是把输入延迟一个指定的时间输出。怎样构造一个有限状态机来把一个输入串延迟一个单位时间输出呢?即对于给定的二进制输入串x1​x2​⋯xk​,可以得到一个输出二进制串:0x1​x2​⋯xk−1​。
解:我们把这个延迟器构造成有两个输入,即0和1,有一个初始状态s0,因为它要记住上一个输入是0还是1,所以还需要两个另外的状态s1,s2,如果上一个输入是1,则它有状态s1,如果上一个状态输入是0,则它有状态s2,对于从s0出发的第一个转换所产生的输出是0,从s1出发的转换产生一个输出1,从s2出发的转换产生一个输出0,对于给定的二进制输入串x1x2⋯xk,可以得到一个输出二进制串0x1x2⋯xk−1。状态图如图9.2.4所示。解:我们把这个延迟器构造成有两个输入,即0和1,有一个初始状态s_0,因为它要记\\\\ 住上一个输入是0还是1,所以还需要两个另外的状态s_1,s_2,如果上一个输入是1,则\\\\ 它有状态s_1,如果上一个状态输入是0,则它有状态s_2,对于从s_0出发的第一个转换所\\\\ 产生的输出是0,从s_1出发的转换产生一个输出1,从s_2出发的转换产生一个输出0,\\\\ 对于给定的二进制输入串x_1x_2 \cdots x_k,可以得到一个输出二进制串0x_1x_2 \cdots x_{k-1}。\\\\ 状态图如图9.2.4所示。解:我们把这个延迟器构造成有两个输入,即0和1,有一个初始状态s0​,因为它要记住上一个输入是0还是1,所以还需要两个另外的状态s1​,s2​,如果上一个输入是1,则它有状态s1​,如果上一个状态输入是0,则它有状态s2​,对于从s0​出发的第一个转换所产生的输出是0,从s1​出发的转换产生一个输出1,从s2​出发的转换产生一个输出0,对于给定的二进制输入串x1​x2​⋯xk​,可以得到一个输出二进制串0x1​x2​⋯xk−1​。状态图如图9.2.4所示。

例9.2.6.构造二进制非负整数加法器的有限状态机。例9.2.6.构造二进制非负整数加法器的有限状态机。例9.2.6.构造二进制非负整数加法器的有限状态机。
解:当(xn⋯x1x0)和(yn⋯y1y0)相加时,过程如下:首先字节x0和字节y0相加产生和的字节z0和一个进位字节c0,这个进位或者为0或者为1,然后字节x1、字节y1以及进位c0相加产生和的字节z1和一个进位字节c1,这个过程进行n步,直到字节xn、字节yn以及前一个进位字节cn−1相加产生和的字节zn和一个进位字节cn,这个字节cn就是和的字节zn+1。完成这个加法器的有限状态机只用到两个状态,为简单起见,我们假设字节xn和字节yn都为0,(这样我们就不用考虑和中的字节zn+1了),初始状态s0为了记住前一个进位是0(或者前者最右面的两个字节相加),另外一个状态s1,是为了记住前一个进位是1的。因为这个状态机的输入是两个字节的对,所以有四个可能的输入,我们记为00,01,10,11(分别代表第一个和第二个字节),转换和输出根据由输入的两个字节代表的和与状态代表的进位来构造。例如,当状态为s1,输入为01,则下一个状态为s1,输出为0,因为和是0+1+1=(10)2。这个状态图见图9.2.5.解:当(x_n \cdots x_1x_0)和(y_n \cdots y_1y_0)相加时,过程如下:首先字节x_0和字节y_0相加\\\\ 产生和的字节z_0和一个进位字节c_0,这个进位或者为0或者为1,然后字节x_1、字节y_1\\\\ 以及进位c_0相加产生和的字节z_1和一个进位字节c_1,这个过程进行n步,直到字节x_n、\\\\ 字节y_n以及前一个进位字节c_{n-1}相加产生和的字节z_n和一个进位字节c_n,这个字节c_n\\\\ 就是和的字节z_{n+1}。完成这个加法器的有限状态机只用到两个状态,为简单起见,我\\\\ 们假设字节x_n和字节y_n都为0,(这样我们就不用考虑和中的字节z_{n+1}了),初始状态\\\\ s_0为了记住前一个进位是0(或者前者最右面的两个字节相加),另外一个状态s_1,是为\\\\ 了记住前一个进位是1的。因为这个状态机的输入是两个字节的对,所以有四个可能的\\\\ 输入,我们记为00,01,10,11(分别代表第一个和第二个字节),转换和输出根据由输入\\\\ 的两个字节代表的和与状态代表的进位来构造。例如,当状态为s_1,输入为01,则下一\\\\ 个状态为s_1,输出为0,因为和是0+1+1=(10)_2。这个状态图见图9.2.5.解:当(xn​⋯x1​x0​)和(yn​⋯y1​y0​)相加时,过程如下:首先字节x0​和字节y0​相加产生和的字节z0​和一个进位字节c0​,这个进位或者为0或者为1,然后字节x1​、字节y1​以及进位c0​相加产生和的字节z1​和一个进位字节c1​,这个过程进行n步,直到字节xn​、字节yn​以及前一个进位字节cn−1​相加产生和的字节zn​和一个进位字节cn​,这个字节cn​就是和的字节zn+1​。完成这个加法器的有限状态机只用到两个状态,为简单起见,我们假设字节xn​和字节yn​都为0,(这样我们就不用考虑和中的字节zn+1​了),初始状态s0​为了记住前一个进位是0(或者前者最右面的两个字节相加),另外一个状态s1​,是为了记住前一个进位是1的。因为这个状态机的输入是两个字节的对,所以有四个可能的输入,我们记为00,01,10,11(分别代表第一个和第二个字节),转换和输出根据由输入的两个字节代表的和与状态代表的进位来构造。例如,当状态为s1​,输入为01,则下一个状态为s1​,输出为0,因为和是0+1+1=(10)2​。这个状态图见图9.2.5.

例9.2.7.在一些编码方案中,如果一个信息中连续出现3个1,那么接收者就直到出现了传输错误,构造一个有限状态机当且仅当最后收到的三个字节都是1的时候,它的输出是1。例9.2.7.在一些编码方案中,如果一个信息中连续出现3个1,那么接收者就直到出现\\\\ 了传输错误,构造一个有限状态机当且仅当最后收到的三个字节都是1的时候,它的输\\\\ 出是1。例9.2.7.在一些编码方案中,如果一个信息中连续出现3个1,那么接收者就直到出现了传输错误,构造一个有限状态机当且仅当最后收到的三个字节都是1的时候,它的输出是1。
解:这个状态机有三个状态,初始状态s0记着前一个输入的值,如果前一个输入存在,说明它不是1。状态s1记着前一个输入是1,如果前一个输入的再前一个输入存在,则它不是1。状态s2记着前两个输入都是1,输入1可以把状态s0变成状态s1,因为现在被读入的只有一个1,而不是两个连续的1;可以把状态s1变成状态s2,因为现在被读入的是两个连续的1;可以把状态s2变成它自身,因为现在被读入的至少是两个连续的1。一个输入0把任何状态都变成状态s0,因为它打破串中1的连续性。当一个1被读到,并且转换是从状态s2到自身的时候,输出为1,因为结合输入和状态我们可以知道已经读到了连续的3个1.所有其它的输出都是0,状态图如下图9.2.7所示。输出为1当且仅当至今为止读到的输入串以111结尾的有限状态机。图中所给的有限状态机是语言识别器的例子,因为它输出为1当且仅当至今读到的输入串具有指定的性质,语言识别是有限状态机的一个重要应用。解:这个状态机有三个状态,初始状态s_0记着前一个输入的值,如果前一个输入存在,\\\\ 说明它不是1。状态s_1记着前一个输入是1,如果前一个输入的再前一个输入存在,则\\\\ 它不是1。状态s_2记着前两个输入都是1,输入1可以把状态s_0变成状态s_1,因为现在被\\\\ 读入的只有一个1,而不是两个连续的1;可以把状态s_1变成状态s_2,因为现在被读入的\\\\ 是两个连续的1;可以把状态s_2变成它自身,因为现在被读入的至少是两个连续的1。\\\\ 一个输入0把任何状态都变成状态s_0,因为它打破串中1的连续性。当一个1被读到,并\\\\ 且转换是从状态s_2到自身的时候,输出为1,因为结合输入和状态我们可以知道已经读\\\\ 到了连续的3个1.所有其它的输出都是0,状态图如下图9.2.7所示。输出为1当且仅当至今\\\\ 为止读到的输入串以111结尾的有限状态机。图中所给的有限状态机是语言识别器的例\\\\ 子,因为它输出为1当且仅当至今读到的输入串具有指定的性质,语言识别是有限状态\\\\ 机的一个重要应用。解:这个状态机有三个状态,初始状态s0​记着前一个输入的值,如果前一个输入存在,说明它不是1。状态s1​记着前一个输入是1,如果前一个输入的再前一个输入存在,则它不是1。状态s2​记着前两个输入都是1,输入1可以把状态s0​变成状态s1​,因为现在被读入的只有一个1,而不是两个连续的1;可以把状态s1​变成状态s2​,因为现在被读入的是两个连续的1;可以把状态s2​变成它自身,因为现在被读入的至少是两个连续的1。一个输入0把任何状态都变成状态s0​,因为它打破串中1的连续性。当一个1被读到,并且转换是从状态s2​到自身的时候,输出为1,因为结合输入和状态我们可以知道已经读到了连续的3个1.所有其它的输出都是0,状态图如下图9.2.7所示。输出为1当且仅当至今为止读到的输入串以111结尾的有限状态机。图中所给的有限状态机是语言识别器的例子,因为它输出为1当且仅当至今读到的输入串具有指定的性质,语言识别是有限状态机的一个重要应用。

许多不同类型的有限状态机用来模拟计算,这一节所给的有限状态机是带有输出的有限状态机也称为Mealy机,还有另外一种很重要的带有输出的有限状态机,它的输出只由状态决定。这种状态机就是Moore机。例9.2.7.表明了一个Mealy机是如何用语言识别的,然而,另外一种没有输出的有限状态机也常用于这个用途,没有输出的有限状态机也称有限状态自动机,它有一组终止状态集合,一符号串被识别当且仅当这个符号串让初始状态到终止状态,我们将再下一节学习这种类型的有限状态机。许多不同类型的有限状态机用来模拟计算,这一节所给的有限状态机是带有输出的有\\\\ 限状态机也称为Mealy机,还有另外一种很重要的带有输出的有限状态机,它的输出\\\\ 只由状态决定。这种状态机就是Moore机。例9.2.7.表明了一个Mealy机是如何用语言\\\\ 识别的,然而,另外一种没有输出的有限状态机也常用于这个用途,没有输出的有限\\\\ 状态机也称有限状态自动机,它有一组终止状态集合,一符号串被识别当且仅当这个\\\\ 符号串让初始状态到终止状态,我们将再下一节学习这种类型的有限状态机。许多不同类型的有限状态机用来模拟计算,这一节所给的有限状态机是带有输出的有限状态机也称为Mealy机,还有另外一种很重要的带有输出的有限状态机,它的输出只由状态决定。这种状态机就是Moore机。例9.2.7.表明了一个Mealy机是如何用语言识别的,然而,另外一种没有输出的有限状态机也常用于这个用途,没有输出的有限状态机也称有限状态自动机,它有一组终止状态集合,一符号串被识别当且仅当这个符号串让初始状态到终止状态,我们将再下一节学习这种类型的有限状态机。

离散数学 09.02 带有输出的有限状态机相关推荐

  1. 带有输出参数的存储过程

    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- ...

  2. “30/Jan/22 09:02 AM”不是有效日期。请按下列格式输入日期:dd/MMM/yy h:mm a

    问题描述 在jira使用中设置日期报错: "30/Jan/22 09:02 AM"不是有效日期.请按下列格式输入日期:dd/MMM/yy h:mm a 问题分析 出现日期报错是因为 ...

  3. 用户输入0-9数字,分别输出零 壹 贰 叁 肆 伍 陆 柒 捌 玖

    #include<iostream> #include <Windows.h> #include <string> using namespace std; int ...

  4. java输出abba_java - 有限状态机搜索“ABBA” - 堆栈内存溢出

    我正在尝试编写一个while switch case kinda代码,用于对有限状态机进行建模,该有限状态机搜索As和Bs字符串以查看字符串"ABBA"是否存在. 当我输入&quo ...

  5. 离散数学【02】——基本结构:集合、函数、序列等

    文章目录 1. 基本结构 2. 集合 2.1 集合相等与子集 2.2 集合的大小 2.3 笛卡尔积 2.4 量词和集合 2.5 集合运算 2.6 接下来是一些零碎的东西 2. 函数 2.1 一对一函数 ...

  6. Numpy入门教程:09. 输入和输出

    背景 什么是 NumPy 呢? NumPy 这个词来源于两个单词 – Numerical和Python.其是一个功能强大的 Python 库,可以帮助程序员轻松地进行数值计算,通常应用于以下场景: 执 ...

  7. 【学习日志】2022.09.02 (C++)strcmp和stricmp、strcmpi三者之间的区别、C语言判断文件后缀名、ZENO Audio Update、TEN MINUTES PHYSICS

    (C++)strcmp和stricmp.strcmpi三者之间的区别 (strcmpi在Windows C标准库实现,但不在GNU C标准库实现) #include <string.h> ...

  8. CCF 2018/09/02 买菜

    题目 去官网看 思路 开始写的时候还是笨方法,一点点地分析两个人停留时间的交集,考虑不同情况下的交谈时间,很费力. 之后还是看了前辈的解法,清晰易懂,在此做下笔记. 建立一个时间段数组,计算每个时间段 ...

  9. IOS学习笔记 ---- 15/09/02

    1.三种方式监听方式: addTarget方法: 使用代理方法: [[NSNotificationCenter defaultCenter] addObserver]方法监听通知: 2.在storyb ...

最新文章

  1. 第七章 Shell文本处理三剑客之sed
  2. 数据结构与算法之贪心算法 C++实现
  3. linux无法挂载移动硬盘6,FC6下挂载NTFS移动硬盘,无法读取
  4. JS 获取字符串长度, 区别中英文
  5. 游戏编程新手教程:怪物AI设计简述
  6. [九省联考2018]IIIDX 贪心 线段树
  7. Android开发之shape画圆环的方法
  8. 如何获取独立项目开发经验
  9. Labyrinth(HDU-4826)
  10. 关于Mysql的错误:No query specified
  11. Dapper在.Net中的使用(二)
  12. 计算机报名照片在线修图,详细!2020国家公务员考试报名确认专题照片处理工具使用教程...
  13. 用python画科赫雪花
  14. rpc调用和http调用有什么区别
  15. 风云java_风云烈传-执掌风云
  16. 10度角的三角函数计算
  17. Android应用盈利广告平台的嵌入方法详解
  18. kinit什么意思_kerberos入坑指南
  19. wp模板里面的各种判断
  20. 谭波 oracle,行动营复盘

热门文章

  1. python模拟用户登录爬取阳光采购平台数据
  2. 基于omi的omim-tag组件
  3. UBT16:ubuntu安装Listen1
  4. Android中出现的各种错误
  5. 20170923 HHC
  6. 控制kobuki 运行一个矩形: 类的形式写ROS节点程序
  7. Android5.x RecyclerView 应用解析
  8. o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task
  9. yilia-puls美化hexo个人博客
  10. 不安分的程序员!阿里90后员工做了个随时FreeStyle的人工智能