uva 327 - Evaluating Simple C Expressions
来源:互联网 发布:20人企业网络解决方案 编辑:程序博客网 时间:2024/04/30 09:43
模拟。这个不知道。。
a,b,……到z 依次为1到26,然后给你一表达式 前置++和前置-- 都先运算, 后置++和后置--都后运算,然后判断表达式的值。和最后各个字母的值
作法比较奇怪。。
先把表达式中的空格和回车全部去掉,弄成一没有间隔的表达式
用一个数组存储各个字母的改变量。最后输出字母再运算。
然后将后置++ 变成 +0。。把 前置++变成+1.。
把后置-- 变成-0。把前置--变成 比如 --a 变成a-1,不过注意这时候如果前面是-号 ,则-1要变成+1;
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN=200;char a[MAXN],b[MAXN];bool vis[MAXN];int val[MAXN],temp[MAXN];bool limit(int ok,char a[]){ //判断是否为字母。 if(ok<0) return false; if(a[ok]<='z' && a[ok]>='a') return true; else return false;}int main(){ //freopen("in.txt","r",stdin); while(gets(a)){ memset(b,0,sizeof(b)); memset(vis,false,sizeof(vis)); memset(val,0,sizeof(val)); memset(temp,0,sizeof(temp)); int la=strlen(a),m=0; for(int i=0;i<la;i++){ if(a[i]==' ') continue; else b[m++]=a[i]; if(a[i]<='z' && a[i]>='a'){vis[a[i]]=true; val[a[i]]=a[i]-'a'+1;} } b[m]='\0'; int lb=strlen(b); char *p=b; while(1){ char *t=strstr(p,"++"); if(t==NULL) break; int ok=t-b; if(limit(ok-1,b)) {b[ok+1]='0';temp[b[ok-1]]=1;} if(limit(ok+2,b)){ b[ok]='1';temp[b[ok+2]]=1; if(ok-1>=0 && b[ok-1]=='-') b[ok+1]='-'; } p = t; } p=b; while(1){ char *t=strstr(p,"--"); if(t==NULL) break; int ok=t-b; if(limit(ok-1,b)) {b[ok+1]='0';temp[b[ok-1]]=-1;} if(limit(ok+2,b)){ b[ok]='1';temp[b[ok+2]]=-1; swap(b[ok],b[ok+2]); if(ok-1>=0 && b[ok-1]=='-') b[ok+1]='+'; //注意这个地方 } p = t; } if(b[0]=='1') b[0]='1'-'0'; else b[0]=val[b[0]]; int value=b[0]; for(int i=1;i<lb;i+=2){ if(b[i]=='+'){ if(b[i+1]=='1') value+=1; else value+=val[b[i+1]]; } else{ if(b[i+1]=='1') value-=1; else value-=val[b[i+1]]; } } printf("Expression: %s\n",a); printf(" value = %d\n",value); for(char i='a';i<='z';i++) if(vis[i]) printf(" %c = %d\n",i,val[i]+temp[i]); } return 0;}
0 0
- UVa 327 Evaluating Simple C Expressions
- UVa 327 - Evaluating Simple C Expressions
- uva 327 - Evaluating Simple C Expressions
- uva 327 - Evaluating Simple C Expressions
- UVa 327 - Evaluating Simple C Expressions
- uva 327 - Evaluating Simple C Expressions
- uva 327 Evaluating Simple C Expressions
- 数据结构 uva-327-Evaluating Simple C Expressions
- UVa 327 - Evaluating Simple C Expressions
- uva 327--Evaluating Simple C Expressions
- uva 327 Evaluating Simple C Expressions
- UVa 327 Evaluating Simple C Expressions (模拟)
- uva 327 - Evaluating Simple C Expressions
- uva 327 - Evaluating Simple C Expressions
- UVa 327 - Evaluating Simple C Expressions
- UVA 327 Evaluating Simple C Expressions
- UVA - 327 Evaluating Simple C Expressions
- UVA 327 - Evaluating Simple C Expressions
- Oracle分析query plan
- Spring笔记+心得
- 【军事】蒸汽机、火炮及枪支之物理分析
- 苹果机顶盒年收入破10亿美元
- Cracking the coding interview--Q8.7
- uva 327 - Evaluating Simple C Expressions
- 黑马程序员 javaScript
- .NET 程序集 中创建CLR sqlServer函数 需要启用 "clr enabled" 配置选项
- 作业调度常见算法
- 1010. Zipper
- 全自动过滤器技术可改善水环境质量浅谈
- 安卓开发环境搭建方法
- 垃圾回收GC:.Net自动内存管理 上(二)内存算法
- 无源光纤网络了解