当前位置: 代码迷 >> 综合 >> poj 1126 Simply Syntax 右线性文法的归约
  详细解决方案

poj 1126 Simply Syntax 右线性文法的归约

热度:94   发布时间:2024-01-19 05:25:47.0

题意:

给字符串s判断是否符合文法X->CXX|DXX|EXX|IXX|NX|p~z。

分析:

线性文法直接归约就好。

代码;

//poj 1126
//sep9
#include <iostream>
#include <string>
using namespace std;
char s[300];
bool solve()
{_strrev(s);int cnt=0;for(int i=0;s[i];++i){if(s[i]>='p'&&s[i]<='z')++cnt;else if(s[i]=='N'){if(cnt==0)return false;}else if(s[i]=='C'||s[i]=='D'||s[i]=='E'||s[i]=='I'){--cnt;if(cnt==0)return false;}elsereturn false;}return cnt==1;			
}int main()
{while(scanf("%s",s)==1){if(solve())puts("YES");elseputs("NO");	}return 0;	
}



  相关解决方案