| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
AC了的DFA做法呵呵。。。。#include<iostream>
#include<ctype.h>
using namespace std;
const int error=9;
int f(int s,char input)
{
switch(s)
{
case 0:
{
if(isdigit(input)) return 2;
if(input=='+'||input=='-') return 1;
if(input=='\0') return 8;
break;
}
case 1:
{
if(isdigit(input)) return 2;
break;
}
case 2:
{
if(isdigit(input)) return 2;
if(input=='.') return 3;
if(input=='e'||input=='E') return 5;
if(input=='\0') return 8;
break;
}
case 3:
{
if(isdigit(input)) return 4;
break;
}
case 4:
{
if(isdigit(input)) return 4;
if(input=='e'||input=='E') return 5;
if(input=='\0') return 8;
break;
}
case 5:
{
if(isdigit(input)) return 7;
if(input=='+'||input=='-') return 6;
break;
}
case 6:
{
if(isdigit(input)) return 7;
break;
}
case 7:
{
if(isdigit(input)) return 7;
if(input=='\0') return 8;
break;
}
}
return error;
}
char *p;
char get()
{
p++;
return *(p-1);
}
int main()
{
const int maxn=1100;
char a[maxn];
int s,t;
scanf("%d\n",&t);
while(t--)
{
cin.getline(a,maxn);
for(p=a;*p;p++);
for(;p>=a&&*(p-1)==' ';p--);
*p='\0';
for(p=a;*p==' ';p++);
s=0;
while((s=f(s,get()))!=8&&s!=error);
if(s==8) printf("LEGAL\n");
else printf("ILLEGAL\n");
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator