栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3820 XML

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3820 XML

#include <iostream>#include <cstring>#include <cstdio>#include <stack>using namespace std;#define sta1 1#define sta2 2#define sta3 3#define sta4 4#define sta5 5#define sta6 6#define sta7 7#define sta8 8#define sta9 9#define sta10 10#define sta11 11#define stafalse 12#define sta13 13#define sta14 14#define sta15 15char str[10000100];int statuNow;stack<int> st;void autoMachine(char ch,int idx){    switch (statuNow)    {    case sta1:        if(ch=='<')  statuNow=sta2;        else if(ch=='&') statuNow=sta6;        else if(ch=='>') statuNow=stafalse;        else if(32<=ch&&ch<=127) statuNow=sta1;        else statuNow=stafalse;        break;    case sta2:        if(ch=='/') statuNow=sta3;        else if(('a'<=ch&&ch<='z')||('0'<=ch&&ch<='9')) statuNow=sta4;        else statuNow=stafalse;        break;    case sta3:        if(('a'<=ch&&ch<='z')||('0'<=ch&&ch<='9')) statuNow=sta3;        else if(ch=='>')        { bool flag=true; if(st.empty()) flag=false; else {     int lastStr=st.top(),thisStr=idx;     while(str[lastStr]==str[thisStr]) lastStr--,thisStr--;     if(str[thisStr]=='/'&&str[lastStr]=='<') flag=true,st.pop();     else    flag=false; } if(flag) statuNow=sta1; else     statuNow=stafalse;        }        else statuNow=stafalse;        break;    case sta4:        if(('a'<=ch&&ch<='z')||('0'<=ch&&ch<='9')) statuNow=sta4;        else if(ch=='/') statuNow=sta5;        else if(ch=='>') statuNow=sta1,st.push(idx);        else statuNow=stafalse;        break;    case sta5:        if(ch=='>') statuNow=sta1;        else statuNow=stafalse;        break;    case sta6:        if(ch=='l') statuNow=sta7;        else if(ch=='a') statuNow=sta8;        else if(ch=='g') statuNow=sta9;        else if(ch=='x') statuNow=sta13;        else statuNow=stafalse;        break;    case sta7:        if(ch=='t') statuNow=sta11;        else statuNow=stafalse;        break;    case sta8:        if(ch=='m') statuNow=sta10;        else statuNow=stafalse;        break;    case sta9:        if(ch=='t') statuNow=sta11;        else statuNow=stafalse;        break;    case sta10:        if(ch=='p') statuNow=sta11;        else statuNow=stafalse;        break;    case sta11:        if(ch==';') statuNow=sta1;        else statuNow=stafalse;        break;    case sta13:        if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z')||('0'<=ch&&ch<='9')) statuNow=sta14;        else statuNow=stafalse;        break;    case sta14:        if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z')||('0'<=ch&&ch<='9')) statuNow=sta15;        else statuNow=stafalse;        break;    case sta15:        if(('a'<=ch&&ch<='z')||('A'<=ch&&ch<='Z')||('0'<=ch&&ch<='9')) statuNow=sta14;        else if(ch==';') statuNow=sta1;        else statuNow=stafalse;        break;    default:;    }}int main(){    while(gets(str)!=NULL)    {        while(!st.empty()) st.pop();        statuNow=sta1;        int len=strlen(str);        for(int i=0;i<len;i++)autoMachine(str[i],i);        if(statuNow==sta1&&st.empty()) printf("validn");        else     printf("invalidn");    }}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/377306.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号