| ||||||||||
| 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 | |||||||||
Re:我也是DFAIn Reply To:AC了的DFA做法呵呵。。。。 Posted by:hanjialong at 2008-09-09 19:19:27 > #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