POJ 3332 Parsing Real Numbers
来源:互联网 发布:魔力宝贝连击奥义数据 编辑:程序博客网 时间:2024/06/05 23:54
http://poj.org/problem?id=3332
题意:给你一个real number , 要求判断是否合法。
思路:第一题DFA。所谓的DFA无非就是一种在各个有限的状态之间转化的图,经过一系列的变化之后问最后一种状态是否合法。
代码:
/*par=0: 初始状态1: 以 + 或者 - 号 2: 以 .结尾 3: 以数字结尾, 没出现过小数点 4: 以E 或者 e结尾 5: 数字后面跟blank 6: 有了E,以数字结尾 7: 有了E , 以+或者-结尾 8: 有了E ,数字后面跟blank 9: 以数字结尾, 已经出现过小数点 */#include<stdio.h>#include<string.h>#include<ctype.h>int T ,N,par;char ch[1010] ;char now[1010] ;void Init(){int i , j ,k, len;i = 0 ; len = strlen(ch);while(i<len && (ch[i ]==' ' || ch[i]==9))i++ ;j = len-1 ;while(j>=i && (ch[j]==' ' || ch[i]==9))j-- ;for(k=0 ;i<=j;i++,k++){now[k] = ch[i] ;}now[k] = 0 ;N = k ;}void judge(char c){if(par == 0){if(c=='+' || c=='-')par = 1 ;else if(c == '.')par = -1 ;else if( isdigit(c) ) par = 3 ;else if( c=='e' || c=='E') par = 4 ;elsepar = -1 ;}else if(par == 1){if( isdigit(c) )par = 3 ;else par = -1 ;}else if(par == 2){if( isdigit(c) )par = 9 ;else par = -1 ;}else if(par == 3){if( isdigit(c) ) par = 3 ;else if(c == '.')par = 2 ;else if(c=='+' || c=='-')par = -1 ;else if(c=='e' || c=='E')par = 4 ;else par = 5 ;//空格 }else if(par == 9){if( isdigit(c) )par = 9 ;else if(c=='e' || c=='E')par = 4 ;else if(c==' ' || c==9)par = 5 ;else par = -1 ;}else if(par == 4){if( isdigit(c) ) par = 6 ;else if(c=='+' || c=='-')par = 7 ;else par = -1 ;}else if(par == 5){if(c=='e' || c=='E') par = 4 ;else if(c==' ' || c==9)par = 5 ;elsepar = -1 ;}else if(par == 6){if(isdigit(c)) par = 6 ;else if(c==' ' || c==9)par = 8 ;else par = -1 ;}else if(par == 7) {if(isdigit(c))par = 6 ;else par = -1 ;}else if(par == 8){if(c==' ' || c==9)par = 8 ;elsepar = -1 ;}}void solve(){int i,j ;par = 0 ;bool ok = 1 ;for(i=0;i<N;i++){judge( now[i] );if(par == -1){ok = 0 ;break ;}}if(par==1 || par==2 || par==4 || par==7 || par==-1) ok=0 ;if(!ok)printf("ILLEGAL\n");else printf("LEGAL\n");}int main(){scanf("%d",&T) ;getchar() ;while(T--){gets(ch) ;Init() ;solve() ;}return 0 ;}
- POJ 3332 Parsing Real Numbers
- POJ 3332 Parsing Real Numbers 可能会
- POJ3332 Parsing Real Numbers DFA
- UVa10464 - Big Big Real Numbers
- 多人部件解析--Towards Real World Human Parsing: Multiple-Human Parsing in the Wild
- Floating-point Numbers Aren't Real
- csu oj 1031 Real Numbers(模拟)
- Floating-Point Numbers Aren’t Real
- the real role of Major and Minor Numbers(来源于网络)
- POJ 1316 Self Numbers
- POJ 2325 Persistent Numbers
- poj 2325 Persistent Numbers
- POJ 1142 Smith Numbers
- POJ 1715 Hexadecimal Numbers
- POJ 1732 Phone numbers
- POJ 1338 Ugly Numbers
- POJ 1338 Ugly Numbers
- poj 2402 Palindrome Numbers
- 构造函数与析构函数的作用【转】
- CentOS6搭建TFTP服务
- 现实世界的Windows Azure:采访SIVECO Romania的高级电子教学部门经理Florin Anton
- android 的Activity和Service之间的通信
- 对缓存的思考——提高命中率
- POJ 3332 Parsing Real Numbers
- 网页MP3播放器代码
- 反卷积效果1
- WinCe 使用DataGrid Column样式
- InputFilter的使用
- 网络加载图片
- Service给 Activity传递消息
- 数组处理
- 电容资料网址